Python构建代理池,突破IP的封锁爬取海量数据(附项目源码)

Posted yk 坤帝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python构建代理池,突破IP的封锁爬取海量数据(附项目源码)相关的知识,希望对你有一定的参考价值。

个人公众号 yk 坤帝
后台回复 ip代理 获取源代码

熟悉爬虫的朋友都知道,高质量的ip非常重要。
那么我们如何快速获得ip呢,今天我就带大家使用爬虫来获取免费的ip。(亲自测试,获取到的代理百分之八十可用)

1. 打开网站首页

可以看到每页有15个数据。咱们的目的很简单,就是要这15x5条ip和对应端口号。完了我们再去筛选那些ip是可用的。

在这里插入图片描述
所有的页数(这里爬取5页,学习所用)
在这里插入图片描述

2. 我们打开浏览器模式模式

分析页面看到这些ip信息都位于tr标签内,所以我么可以使用xpath来获取这些信息。

在这里插入图片描述

    trs = tree.xpath('//*[@id="list"]/table/tbody/tr')

3. 获取到当前页面所有ip信息

获取到当前页面所有ip信息之后我们就可以使用for循环获取tr标签内部具体的ip和端口号。

    for tr in trs:
        ip_num = tr.xpath('./td[1]/text()')[0]
        ip_port = tr.xpath('./td[2]/text()')[0]

在这里插入图片描述
4. 接下来就使用for循环获取15x5条数据。

for page in range(1,6):
    time.sleep(1)
    print(f'===============正在爬取第{page}页数据================')
    url = f'https://www.kuaidaili.com/free/inha/{page}/'

在这里插入图片描述
5. 测试可用性

现在所有的ip都已经获取到了,能不能用还是未知数,所以我们试着有这些ip登陆一下百度页面,检测其可用性。

    for ip in proxies_list:
        try:
            response = requests.get(url = 'https://www.baidu.com',proxies = ip,timeout = 0.1)
            if response.status_code == 200:
                can_use.append(ip)
        except:
            print('当前的代理:',ip,'请求超时,检测不合格')
        else:
            print('当前的代理:',ip,'检测合格')

检测结果如下:

打造属于自己的ip代理池(从此再也不怕爬虫ip被封了)亲测可用

测了75个,大概50个可以用。 质量也比较高,可以尝试构建代理池,从此不用为被封ip烦恼了。

个人公众号 yk 坤帝
后台回复 ip代理 获取源代码

以上是关于Python构建代理池,突破IP的封锁爬取海量数据(附项目源码)的主要内容,如果未能解决你的问题,请参考以下文章

打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜

python 爬虫 ip池怎么做

多线程爬取免费代理ip池 (给我爬)

python使用redis实现ip代理池

飞猪IP-代理-换IP作用

爬取免费IP,建立自己的爬虫IP池