|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 和vvv 于 2017-6-24 11:00 编辑
24 用户代理池构建实战
一、用户代理池概述
我们已经学会如何构架用户代理(头文件更改),那么用户代理池又应该如何构建呢?所谓用户代理池,即将不同的用户代理组建成一个池子,随后随机调用。换句话说,我们就是随机使用不同的浏览器访问网站。因为我们更改的就是代表浏览器表示的头文件。
二、用户代理池构建实战
(1)代理池构建- #用户代理可以在百度上找,复制过来就行。但要找能用的。
- uapools = [
- "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
- "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon/3.0)",
- "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; QIHU 360EE)",
- ]
复制代码 (2)定义一个函数,从代理池内随机选择一个用户代理- #从代理池内随机选择一个用户代理。需导入random模块
- def ua(uapools):
- thisua = random.choice(uapools)
- print(thisua)
- headers = ("User-Agent",thisua)
- opener = urllib.request.build_opener()
- opener.addheaders = [headers]
- urllib.request.install_opener(opener)
复制代码 (3)使用用户代理池爬取糗事百科
结果:- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon/3.0)
- 中午老师打电话来说儿子鞋坏了,不能穿了,我赶紧买了一双新的送去幼儿园<br/>进教室的时候我茫然了,一堆穿着一样校服的小萝卜头谁是我儿子???<br/>我看着这些孩子:这个不是,那个也不是,………<br/>彻底蒙圈的我忍不住大声:儿子,出来!<br/>身旁一双小手轻轻的扯我衣角:妈妈,你不认识我了?我在这里好久了!
- ----------------
- 记得好多年前刚开始玩QQ,不知道很多英文缩写什么意思,记得一个女性网友的男朋友(后来才知道)给我发来SB,当时不明白什么意思,思虑良久开始回复,这个回复至今都让自己佩服:这是你的英文名缩写吗?
- .........
- Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0
- 中午老师打电话来说儿子鞋坏了,不能穿了,我赶紧买了一双新的送去幼儿园<br/>进教室的时候我茫然了,一堆穿着一样校服的小萝卜头谁是我儿子???<br/>我看着这些孩子:这个不是,那个也不是,………<br/>彻底蒙圈的我忍不住大声:儿子,出来!<br/>身旁一双小手轻轻的扯我衣角:妈妈,你不认识我了?我在这里好久了!
- ----------------
- 记得好多年前刚开始玩QQ,不知道很多英文缩写什么意思,记得一个女性网友的男朋友(后来才知道)给我发来SB,当时不明白什么意思,思虑良久开始回复,这个回复至今都让自己佩服:这是你的英文名缩写吗?
复制代码
可以发现,每次都是随机调用用户代理进行爬取,这就对爬虫进行了较好地伪装。对方想要屏蔽爬虫,也不会那么地容易。用户代理池里的用户代理越多越好,越多的话,并且在能用的情况下,越能伪装自己。
|
评分
-
查看全部评分
|