当同一ip短时间内多次链接同一网站,很可能导致ip被封,所以需要利用代理ip防止封禁。代理ip可以通过百度很容易的获取 比如黑核动态ip代理,但是,很明显我们用爬虫的人,不是会一个个自己复制粘贴的人,所以自然想到用爬虫解决问题。
主要思路
1.从代理网站爬取IP地址及端口号并存储
2.验证ip能否使用
3.格式化ip地址
4.在requests中使用代理ip爬网站
具体实现
1.爬取代理IP
这一步很简单就直接上代码了
url = 'http://www.xicidaili.com/wt'def get_ip_list(url, headers): """ 从代理网站上获取代理""" ip_list = [] page = requests.get(url, headers=headers) soup = BeautifulSoup(page.text, 'lxml') ul_list = soup.find_all('tr', limit=20) print(len(ul_list)) for i in range(2, len(ul_list)): line = ul_list[i].find_all('td') ip = line[1].text port = line[2].text address = ip + ':' + port ip_list.append(address) return ip_list
最终获得的是是这样的ip:port列表
2.验证ip可用
验证可用有两种思路:
- 在格式化好的用代理IP访问指定网站,如果返回状态为200,表示这个代理是可以使用的
- 在ip_list基础上使用telnet来验证
直接访问式验证
import requests #假设此时有一已经格式化好的ip代理地址proxiesproxies = { http: 'http://114.99.7.122:8752' https: 'https://114.99.7.122:8752'} 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'} url = 'http://www.whatismyip.com.tw/'try: page = requests.get(url, headers=headers, proxies=proxies) except: print('失败') else: print('成功')
这个方法很容易想到,但是受限于代理的延时,很慢,于是有了下面一个快一点的使用telnet来验证
方法:
#这里假设有ip_list中某一iphd, port = ip.split(':')try: telnetlib.Telnet(hd, port=port, timeout=20)except: print '失败'else: print '成功'
3.格式化
在Requests中使用代理爬取的格式是
import requests requests.get(url, headers=headers, proxies=proxies)
其中proxies是一个字典其格式为:
对每个ip都有
proxies = { http: 'http://114.99.7.122:8752' https: 'https://114.99.7.122:8752'}
这里注意:
对于http和https两个元素,这里的http和https
代表的不是代理网站上在ip后面接的类型
代表的**是**requests访问的网站的传输类型是http还是https
所以,如果,你爬的网站是http类型的你就用http,如果是https类型的你就用https,当然相应的在代理网站上爬的时候也要分别爬http或https的ip
当然为了省事,我们都加上,反正会验证能不能用,这样有更好的通用性。
具体格式化代码为:
def get_proxy(aip): """构建格式化的单个proxies""" proxy_ip = 'http://' + aip proxy_ips = 'https://' + aip proxy = {'https': proxy_ips, 'http': proxy_ip} return proxy
4.使用代理建立爬虫
由于本身就是为了学习,所以建立爬虫爬取的是显示ip的网站http://www.whatismyip.com.tw/
这个网站会显示你的ip地址,从而可以很直观确认我们的代理是否成功了
代码是很简单的爬虫就直接上代码了:
def print_ip(proxies): """利用http://www.whatismyip.com.tw/显示访问的ip""" cookies = { 'sc_is_visitor_unique': 'rx6392240.1508897278.298AFF0AE2624F7BC72BADF517B67AEE.2.2.2.2.2.2.1.1.1', } headers = { 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', } url = 'http://www.whatismyip.com.tw/' try: page = requests.get(url, headers=headers, proxies=proxies) except: print(str(proxies) + 'is wrong') else: soup = BeautifulSoup(page.text, 'lxml') my_ip = soup.find('b').text print('成功连接' + my_ip)
可以看到这里用的是第一种方式确认ip的可用
如果运行成功有如下显示:
相关资讯
爬虫技术工程师为什么离不开ip代理
说到爬虫,自然离不开爬虫代理地址。爬虫是一门随着互联网大数据而应运而生的产物,它主要是为了在海量的网络数据中采集分析有效的数据而诞生的一门技术。无需多言,爬虫技
来源:黑核混拨ip加速器网
2018-12-28 15:24:23
如何使用ip代理保证爬虫能正常工作?
在实际的爬虫抓取的过程中,由于会存在恶意采集或者恶意攻击的情况,很多网站都会设置相应的防爬取机制,通常防爬程序都是通过ip来识别机器人用户的,因此充足可用的ip
来源:黑核混拨ip加速器网
2018-12-28 17:22:15
为什么网络爬虫需要大量IP 有什么好用的IP切换软件
在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力,所以你一直用同一个代理IP
来源:黑核混拨ip加速器网
2019-01-02 18:00:27
爬虫程序为什么都离不开代理ip软件
c#爬虫程序,现在做爬虫抓取数据用什么程序最好,之前在知乎上有一位用户,只为证明c#是爬虫最好的程序而进行了大量的测试。那么写爬虫抓取数据一定会用到代理ip,黑
来源:黑核混拨ip代理
2019-01-10 10:55:33
为什么说好的代理ip软件能提高爬虫效率
c#爬虫,现在做业务越来越难,市面上的代理ip商家五花八门,试过很多代理ip的人会知道对业务效果并不理想,为什么黑核混拨ip代理软件的代理ip质量很高,下面我来
来源:黑核混拨ip代理
2019-01-10 11:07:11
爬虫程序为什么要使用代理ip软件
c#爬虫和python要用什么代理ip?我用c#,java都写过爬虫。区别不大,原理就是利用好正则表达式。只不过是平台问题。后来了解到很多爬虫都是用python
来源:黑核混拨ip代理
2019-01-10 11:19:45
哪里有好用又便宜的爬虫代理ip软件
在互联网世界中,用户每一次点击和访问,都不仅仅只是一次点击、访问,它们将汇聚成大片数据,成为你和他人网络畅游的路径。这是爬虫的作用,采集抓取网站信息,帮助搜索引
来源:黑核混拨ip代理
2019-01-10 15:54:51
Python爬虫如何获取大量的ip预防被封
python爬虫抓取和分析京东商城评价互联网购物现已成为当下最流行的购物方式,很多用户在互联网购买商品后,会对商品包装、质量,商家服务做出客观评价。商品评价的好
来源:黑核混拨ip代理
2019-01-19 10:51:05
常见几种自动换IP方式对比
现在很多工作都需要换IP,本文介绍几种常见的自动换IP方式的对比,换IP方式包含路由器换IP,拨号换IP,vpn换IP,3G/4G手机上网卡换IP,代理服务器换
来源:黑核混拨ip代理
2019-03-28 17:30:28
什么是ip代理软件?可以修改ip地址吗?
经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们
来源:黑核混拨ip加速器网
2018-12-27 17:27:18
IP加速器的使用方法和简单问题解决办法
IP加速器,顾名思义就是加速IP,提升网络性能,降低网络延迟。黑核混拨ip加速器是一款ip量大速度快的加速器,非游戏外挂,可以放心使用。IP加速器的客户端设置简
来源:黑核混拨ip加速器网
2018-12-28 10:21:44
推荐阅读
Copyright © | 广州网连信息技术有限公司动态ip代理版权所有 备案号:粤ICP备18088888号-15 网站地图