Python爬虫常用的小技巧-设置动态ip

Python爬虫常用的技巧——设置代理IP?在学习Python爬虫时,经常会遇到要爬的网站,采用了反爬技术,导致爬不上去。网页信息的高强度、高效率抓取往往会给网站服务器带来很大压力,所以同一个IP重复抓取同一个网页,很可能会被屏蔽。这里有一个爬虫技能,设置代理IP。
 
 
 
 
 
 
下面简单介绍一下免费获取代理IP的方法。这种方法的优点是免费,缺点是爬出来后不可用的多。
 
 
 
IP地址取自国内IP网站和IP模拟器代理。如果我们抓取主页上的IP地址,或者你可以抓取第一页和第二页,一般用途就足够了。
 
 
 
配置环境
 
 
 
安装请求库
 
 
 
安装bs4库
 
 
 
安装lxml库
 
 
 
绝对代码
 
 
 
不多说直接上代码。
 
 
 
动态IP模拟器
 
 
 
get_ip_list(url,headers)函数传入url和头,最后返回一个ip列表。该列表的元素类似于122.114.31.177:808格式,该列表包括国内互联网代理IP网站主页上的所有IP地址和端口。
 
 
 
get_random_ip(ip_list)函数传入由第一个函数获得的列表,并返回一个随机代理。这个代理可以传入requests的get方法,这样你每次运行都可以使用不同的IP访问抓取的网站,有效避免真实IP被屏蔽的风险。
 
 
 
代理的格式是字典:{ ' http ':' http://122 . 114 . 31 . 177:808 ' },下面的执行也可以封装成方法。
 
 
 
为了抓取ip,Rhino代理服务器做了反抓取。如果频繁抓取IP,服务器会主动返回503服务不可用并提示阻止,所以在请求时可以先请求保存一个文件进行读取,或者抓取一个IP几分钟后再抓取,相当于增加了一个定时功能。
 
 
 
代理IP的使用
 
 
 
运行上面的代码会得到一个随机的代理,它可以直接传递给请求的get方法。
 
 
 
res = requests.get(url,headers=headers,proxies = proxies)
 
 
 
这里要提醒大家的是,免费代理IP的稳定性还是需要讨论的。不如建议如何抓取大量信息或者买一些代理IP。