爬虫学习之13:代理的使用

2022年网络爬虫学习心得 经过一学期的网络爬虫学习,我意识到在生活中或是未来工作中,网络爬虫是我可以利用的一种高效工具。网络爬虫技术在科学研究、Web安全、产品研发等方面都起着重要作用。在数据处理方面,如果没有数据就可以通过爬虫从网上筛选抓取自己想要的数据。并且伴随着网络技术的发展,我们早已进入信息爆炸的时代,面对繁冗的数据,我们很难从里面提取到有价值的数据,为了解决传统人工收集数据的不便的问题,通过利用爬虫技术就可以轻松找到自己想要的数据。 阅读详情

    使用爬虫的过程中即使再使用time.sleep()函数暂停,对于很多网站仍然会被封锁,因此需要使用代理,网上推荐较多的是西刺代理,本文编写个简单的爬虫来获取西刺代理国内高匿代理的IP加端口,可以获取到地址后,可以在爬虫中构建代理地址池,不断的使用不同的代理发起爬虫,防止被封锁。代码如下:

from bs4 import BeautifulSoup # 解析网页
from fake_useragent import UserAgent # 随机生成User-agent
import urllib.request, csv

#获取代理,使用的是西刺代理,通过解析网页获取代理池
def get_proxy():
    # 报头设置
    def header(website):
        ua = UserAgent()
        headers=("User-Agent", ua.random)
        opener = urllib.request.build_opener()
        opener.addheaders = [headers]
        req = opener.open(website).read()
        return req
    # 读取网页
    proxy_api = 'http://www.xicidaili.com/nn'
    data = header(proxy_api).decode('utf-8')
    data_soup = BeautifulSoup(data, 'lxml')
    data_odd = data_soup.select('.odd')
    data_ = data_soup.select('.')
    # 解析代理网址 获取ip池(100个)
    ip,port = [],[]
    for i in range(len(data_odd)):
        data_temp = data_odd[i].get_text().strip().split('\n')
        while '' in data_temp:
            data_temp.remove('')
        ip.append(data_temp[0])
        port.append(data_temp[1])
    for i in range(len(data_)):
        data_temp = data_[i].get_text().strip().split('\n')
        while '' in data_temp:
            data_temp.remove('')
        ip.append(data_temp[0])
        port.append(data_temp[1])
    if len(ip) == len(port):
        proxy = [':'.join((ip[i],port[i])) for i in range(len(ip))]
        #print('成功获取代理ip与port!')
        return proxy
    else:
        print('ip长度与port长度不一致!')

proxy = get_proxy()

with open('proxy.csv','w',encoding = 'utf-8-sig', newline = '') as f:
    w = csv.writer(f)
    w.writerow(['代理地址+端口'])

with open('proxy.csv', 'a+', encoding = 'utf-8-sig') as f:
    w = csv.writer(f, lineterminator='\n')
    for i in range(0, len(proxy)):
        try:
            w.writerow([proxy[i]])
        except Exception as e:
            print('第 ', i , proxy[i],'error: ', e, '\n')
print("成功写入文件!")

结果写入了CSV,使用utf-8在Windows下乱码,直接改用UTF-8-sig不会乱码,结果如下:

代理地址+端口
110.73.42.240:8123
118.190.95.35:9001
118.190.95.26:9001
118.190.95.43:9001
122.114.31.177:808
118.114.77.47:8080
221.10.159.234:1337
112.87.103.61:8118
183.159.95.200:41373
110.73.6.50:8123
101.236.60.52:8866
114.231.65.99:18118
114.231.69.209:18118
180.118.243.59:61234
101.236.23.202:8866
114.246.244.131:8118
111.155.116.217:8123
61.135.155.82:443
101.236.60.48:8866
111.155.116.249:8123
117.86.16.50:18118
101.236.21.22:8866
122.246.49.130:8010
111.155.116.234:8123
117.86.9.188:18118
182.114.129.61:37152
106.56.102.20:8070
221.227.251.117:18118
125.120.201.22:6666
121.31.101.113:8123
180.212.26.202:8118
180.118.242.119:808
111.155.116.211:8123
59.62.165.95:53128
115.204.30.147:6666
180.125.137.37:8000
####检测代理地址是否可用
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'
}
print("共计{}个代理地址".format(len(proxy)))
fp = open('proxy.csv','w+',newline='',encoding='utf-8-sig')
writer = csv.writer(fp)
writer.writerow(('代理地址'))
test_results = []
for i in range(len(proxy)):
    ip,port = proxy[i].split(':')
    try:
        telnetlib.Telnet(ip, port=port, timeout=20)
    except:
        print('{}:{}检测失败'.format(ip,port))
    else:
        print('{}:{}检测成功'.format(ip,port))
        writer.writerow((proxy[i]))
print("检测完毕")

##加载可用的地址
csv_file = csv.reader(open('proxy.csv','r'))
print("可用的代理IP如下:")
for ip in csv_file:
    print(ip)

.......

当然,上面的代理地址不一定可以使用,这里使用telent来检测代理地址是否可用,并存储下来:


在获取到可用的代理地址池后就可以使用代理发起Request查询,代码示例如下:

#url为带爬取网站的url,proxy_addr为从地址池中随机获取的地址。
def use_proxy(url,proxy_addr):
    req=urllib.request.Request(url)
    req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
    proxy=urllib.request.ProxyHandler({'http':proxy_addr})
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data=urllib.request.urlopen(req).read().decode('utf-8','ignore')
    return data

使用随机函数调用use_proxy即可:

for i in range(len(url)):
    for data in use_proxy(url[i],proxy[random.randint(3,50)]):.......



PHP网络爬虫框架ScrapyPython + PHP 实现网络爬虫 在众多的网络爬虫框架中,Scrapy是非常流行的一个。同时,它还提供了许多优秀的扩展,如Scrapy-Redis,能够支持多分布式爬取,让Scrapy在网络爬虫开发中大放异彩。需要注意的是,在整个过程中,我们需要注意两种语言之间的数据传递方式,以及如何处理异常情况。在这个示例中,我们定义了一个Spider名为myspider,在start_requests中定义了需要访问的URLs,在parse中解释了如何处理爬取到的数据。最后,我们可以在PHP程序中添加适当的数据处理逻辑,来获取我们所需要的数据。 阅读详情

相关推荐

python网络爬虫学习笔记(1)爬虫概述 安装 Python基础

网络爬虫学习笔记(1) 1 资料 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。 2 笔记 2-1 爬虫概述 (约2016年)网络爬虫个人使用和科研范畴基本不存在问题,但商业盈利范畴就要看对方了。 通过网站的Robots协议(爬虫协议)可以知道可以和不可以抓取的内容,例如淘宝的[link]https://www.taobao.com/robots...

user_987654321的博客 1796

python爬虫关于ip代理池的获取和随机生成

👉Python学习路线汇总👈Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)👉Python必备开发工具👈。

2301_82000445的博客 1660

Python网络爬虫工程师需要掌握的核心技术

在当下这个社会,如何有效地提取并利用信息成为一个巨大的挑战。基于这种巨大的市场需求,爬虫技术应运而生,这也是为什么现在爬虫工程师的岗位需求量日益剧增的原因。那么做Python网络爬虫需要掌握哪些核心技术呢?以推出的《Python网络爬虫》课程为例,内容涉及Scrapy框架、分布式爬虫等核心技术,下面我们来一起看一下Python网络爬虫具体的学习内容吧! Python网络爬虫课程简介: 为了让具备Python基础的人群适合岗位的需求,推出了一门全面的、系统的、简易的Python网络爬虫入门级课程,不仅讲解了

1461

Python爬虫设置代理

在Python中使用代理进行爬虫操作可以有效地隐藏用户的真实IP地址,防止被封禁或者限制访问。下面是设置代理的示例代码:

weixin_44617651的博客 1451

GetProxy Proxy 代理

GetProxy Proxy 代理 抓取代理

AI 代码生成工具的质量评估体系

基础需求层包括响应速度(Response Time)和界面友好性(UI Friendliness),期望需求层涵盖智能提示(Smart Suggestions)和个性化配置(Personalization),兴奋需求层则涉及多模态交互(Multimodal Interaction)和代码进化(Code Evolution)。在金融领域,代码审计合规性(Compliance Audit)权重应提升至40%,而在Web开发中,API兼容性(API Compatibility)的权重需达到35%。

2503_92418637的博客 3372

爬虫里面设置代理:详细步骤与代码示例

在爬虫中设置代理是一个重要的环节,通过合理配置代理,您可以有效提高抓取效率并保护个人隐私。无论是使用`requests`库还是Scrapy框架,设置代理都相对简单。记得在使用过程中注意异常处理,并选择合适的代理服务商,以确保您的爬虫工作顺利进行。

Eonjq的博客 1215

Altium Designer操作技巧(1)——原理图中如何批量替换元器件?

《AltiumDesigner批量替换元器件技巧分享》摘要:本文介绍了两种在AltiumDesigner中批量替换元器件的实用方法。方法一通过“查找相似对象”功能,可精准匹配并批量修改器件参数;方法二利用ActiveBOM功能,在BOM表中直观操作器件替换,推荐使用第二种方法可使BOM管理更高效。这些技巧能有效减少物料种类、降低贴装成本,特别适用于电阻电容等常用器件的批量替换。关注公众号获取更多电子设计技巧。

u012526819的博客 2575

爬虫使用ip代理代码怎么写

使用IP代理进行爬虫请求可以有效提高爬虫的稳定性和安全性。通过以上示例代码,你可以灵活地配置代理IP、轮换代理、添加请求头等,以满足不同的爬虫需求。希望这些示例能帮助你更好地进行爬虫开发,获取所需的数据!

Eonjq的博客 493

RLHF的数学表示

RLHF(Reinforcement Learning with Human Feedback)是一种结合了强化学习和人类反馈的机器学习方法。它通常用于训练智能体(agent)在复杂环境中做出决策,同时利用人类的反馈来指导和改进学习过程。RLHF 没有一个统一的数学表示式,因为它依赖于具体的应用场景和实现细节。然而,我们可以从强化学习和人类反馈的角度来描述RLHF的一些关键数学概念。

xw555666的博客 687

基于远程服务器 Tip_Adapter源码从零开始复现

从零一步步实现源代码的运行

zcyzcyjava的博客 1602

开发网络爬虫应该怎样选择爬虫框架

有些人问,开发网络爬虫应该选择Nutch、Crawler4j、WebMagic、scrapy、WebCollector还是其他的?这里按照我的经验随便扯淡一下: 上面说的爬虫,基本可以分3类: 1.分布式爬虫:Nutch 2.JAVA单机爬虫:Crawler4j、WebMag...

chunjiushi9898的博客 413

【理解机器学习算法】之岭回归Ridge - L2 Rgularization

本人就职海外从事人工智能领域开发设计。 希望花时间总结下流行的机器学习算法,希望大家一起学习,欢迎指正!

Hyman Qiu 2314

13 中间件、请求头代理、IP代理---scrapy爬虫初学者学习过程

内容:中间 + 随机请求头中间件 + 随机ip代理池中间件 作者:Irain QQ:2573396010 微信:18802080892 GitHub项目链接:https://github.com/Irain-LUO/Scrapy_Study. 视频资源链接:https://www.bilibili.com/video/BV1P4411f7rP?p=92 爬取目标网页链接: 目录内容:中间 + 随机请求头中间件 + 随机ip代理池中间件1 中间件内容2 请求头中间件2.1 设置随机请求头中间件2.2 设置

weixin_42122125的博客 518

广东省道路工程检测练习试题(单选题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。A.不低于75%B.不低于80%C.不低于85%D.不低于90%答案:B2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( )A.1B.2C.3D.4答案:A3.根据《城镇道路工程施工与质量验收规范》,在分部工程中,根据工种、材料、施工工艺等划分的是( )A.单位工程B.分项工程C.分部工程D.工序工程答案:B4.根据《城镇道路工程施工与质量验收规范》,土方路基压实度的检测频率为每1000m每压实层抽检( )

ZShy001238的博客 681

详细推导波特图增益和相位曲线

最近因为项目需求,在回看波特图方面的内容。大三那会,《自动控制原理》这本书里面就讲过这些东西,但是那时候总感觉学这些没啥用,反正以后也用不到,对这种课程的重视度不是很高。 工作后发现,只要你从事的是和本专业相关的工作,大学学过的很多理论课程在后面大概率都会用到。曾经那些我们在学校以为用不上的东西,熟不知在后面用处还多着呢。所以啊,仅仅只是我们的以为而已! 现在还在学校的同学,对待《自动控制理论》、《信号与系统》、《通信原理》这样的核心专业课,建议还是好好学习一下,认真听听课。哪怕是考试完以后就会忘掉,但当我

D_Katter的博客 3936

如何免费解锁付费文章:13ft Ladder自托管付费墙绕过完整指南

你是否曾因付费墙而无法阅读重要新闻或学术论文?13ft Ladder是一个开源的自托管工具,能帮助你轻松绕过各大网站的付费限制,让你免费获取原本需要付费才能查看的内容。这款工具通过模拟搜索引擎爬虫的方式获取完整页面内容,完全免费且保护你的隐私安全。 ## 📖 项目概述与价值主张 13ft Ladder是一个功能强大的付费墙绕过解决方案,它不仅仅是12ft.io的替代品,更是一个兼容性更强的自

gitblog_01121的博客 213

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5877

【基础】【Python网络爬虫】【13.免费代理与付费代理】(附大量案例代码)(建议收藏)

一、免费代理 1. 什么是代理IP 2. 代理IP的类型 3. 代理IP的作用 4. 免费代理的潜在风险 5. 免费代理网站 二、付费代理 1. 找付费代理服务站点 2. 生成获取代理的api接口 3. python获取代理 请求接口示例 数据返回示例 4. 解决请求速率 5. 品易代理使用注意事项 代理添加白名单 请求速率问题

weixin_43612602的博客 6048

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

从入门到精通:网络爬虫开发实战总结

学习是一种持续不断的过程,无论在什么领域,都需要不断地努力和探索。在这段爬虫学习历程中,我不仅获得了丰富的知识和技能,也结交了很多志同道合的朋友和粉丝,他们对我的学习和进步都提供了极大的支持和鼓励,支持我继续写下去。 总的来说,这段时间的学习和写作让我认识到了自己的不足和缺陷,也让我更加坚定了继续学习和进步的决心。我相信,在未来的学习和工作中,这段经历将成为我前行的动力和支撑。在这里,我将过去写过的爬虫文章总结一下,不仅是在爬虫学习这里留下一个里程碑,也是为了能够总结一下阶段性学习成果。

weixin_50804299的博客 6560

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

网络爬虫入门学习

突然对网络爬虫产生了一些兴趣 (鬼知道是因为什么) ,就在网络找到了些学习资料,花了半个月的时间进行了一个网络爬虫入门学习,当然这种学习要结合实践啦。 Talk is cheap, show me the code! 所以特意将半个月实践的结果按照学习的时间顺序整理好了上传到GitHub上,希望不仅自己可以回顾,也希望可以给广大爱学习的网友一点参考的价值。哦哦哦,还有一点,爬虫可以用各种语言写...

zhaohancsdn的博客 3414

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Scrapy网络爬虫框架学习

Scrapy是一个用Python编写的开源爬虫框架,目标是帮助开发者高效地从网站上提取数据。它和单纯用 requests + BeautifulSoup 不一样,Scrapy提供了一整套完整的“爬虫解决方案”,非常适合做中大型爬虫项目。

YoungLime的博客 2808

网络爬虫安全:90后小伙,用软件非法搬运他人原创视频被判刑

犯罪嫌疑人 90 后程序员周某交代,这款软件主要用于非法搬运视频,支持视频镜像,去水印,草稿替换,摄像头替换等功能,修改后的视频支持在快手、抖音、哔哩哔哩、小红书、西瓜视频等主流视频平台一键发布,从而协助他人实现账号“快速涨粉”目的。网络爬虫的攻击手段也日益智能化和复杂化,仅仅依靠限制访问频率或者前端页面加密已经难以有效防御,需要提升人机识别技术,增加异常行为的识别和拦截能力,以限制网络爬虫的访问,提高恶意盗取的攻击成本。顶象为企业提供了全流程的立体防控方案,能够有效防范网络爬虫的恶意盗取行为。

顶象科技的技术文章 2772

Elastic 网络爬虫:为你的网站添加搜索功能

从我们的第一次爬取中,我们注意到 category 页面也被爬取了,而我们对它们不感兴趣,所以让我们将它们排除在爬取之外。在爬取规则下,添加一个新规则来禁止爬取以路径模式 /catalogue/category/ 开头 (Begins with) 的页面。现在我们可以在新规则生效的情况下重新进行一次爬取。注意:作为探索过程的一部分,每次更改网络爬虫配置时,我建议删除内容。在最后一章 “准备生产部署” 中,我们将看到如何在不手动删除数据的情况下重新运行网络爬虫。

Elastic 中国社区官方博客 3068

网络爬虫

lParser2.1,使用的开发工具(IDE)为intelij 13.1,Jar包管理工具为Maven,不习惯用intelij的同学,也可以使用eclipse新建一个项目. 二.爬虫基本知识 1.什么是网络爬虫?(爬虫的基本原理) 网络爬虫,拆开来讲,网络即指互联网,互联网就像一个蜘蛛网一样,爬虫就像是蜘蛛一样可以到处爬来爬去,把爬来的数据再进行加工处理. 百科上的解释:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的

weixin_43880379的博客 1351

Java网络爬虫实战

使用Java进行网络数据采集

程序员好冰的博客 1523
上一篇: 爬虫学习之12:多进程爬虫初试
下一篇: 爬虫学习之14:多进程爬取简书社会热点数据保存到mongodb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值