文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python爬虫怎么实现搭建代理ip池

2023-07-02 11:50

关注

这篇“Python爬虫怎么实现搭建代理ip池”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python爬虫怎么实现搭建代理ip池”文章吧。

一、User-Agent

在发送请求的时候,通常都会做一个简单的反爬。这时可以用fake_useragent模块来设置一个请求头,用来进行伪装成浏览器,下面两种方法都可以。

from fake_useragent import UserAgentheaders = {        # 'User-Agent': UserAgent().random #常见浏览器的请求头伪装(如:火狐,谷歌)        'User-Agent': UserAgent().Chrome #谷歌浏览器    }

Python爬虫怎么实现搭建代理ip池

二、发送请求

response = requests.get(url='http://www.ip3366.net/free/', headers=request_header())        # text = response.text.encode('ISO-8859-1')        # print(text.decode('gbk'))

三、解析数据

我们只需要解析出ip、port即可。

Python爬虫怎么实现搭建代理ip池

Python爬虫怎么实现搭建代理ip池

使用xpath解析(个人很喜欢用)(当然还有很多的解析方法,如:正则,css选择器,BeautifulSoup等等)。

#使用xpath解析,提取出数据ip,端口        html = etree.HTML(response.text)        tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')        for td in tr_list:            ip_ = td.xpath('./td[1]/text()')[0] #ip            port_ = td.xpath('./td[2]/text()')[0]  #端口            proxy = ip_ + ':' + port_   #115.218.5.5:9000

四、构建ip代理池,检测ip是否可用

#构建代理ipproxy = ip + ':' + portproxies = {        "http": "http://" + proxy,        "https": "http://" + proxy,        # "http": proxy,        # "https": proxy,    }    try:        response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #设置timeout,使响应等待1s        response.close()        if response.status_code == 200:            print(proxy, '\033[31m可用\033[0m')        else:            print(proxy, '不可用')    except:        print(proxy,'请求异常')

五、完整代码

import requests                         #导入模块from lxml import etreefrom fake_useragent import UserAgent#简单的反爬,设置一个请求头来伪装成浏览器def request_header():    headers = {        # 'User-Agent': UserAgent().random #常见浏览器的请求头伪装(如:火狐,谷歌)        'User-Agent': UserAgent().Chrome #谷歌浏览器    }    return headers'''创建两个列表用来存放代理ip'''all_ip_list = []  #用于存放从网站上抓取到的ipusable_ip_list = [] #用于存放通过检测ip后是否可以使用#发送请求,获得响应def send_request():    #爬取7页,可自行修改    for i in range(1,8):         print(f'正在抓取第{i}页……')        response = requests.get(url=f'http://www.ip3366.net/free/?page={i}', headers=request_header())        text = response.text.encode('ISO-8859-1')        # print(text.decode('gbk'))        #使用xpath解析,提取出数据ip,端口        html = etree.HTML(text)        tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')        for td in tr_list:            ip_ = td.xpath('./td[1]/text()')[0] #ip            port_ = td.xpath('./td[2]/text()')[0]  #端口            proxy = ip_ + ':' + port_   #115.218.5.5:9000            all_ip_list.append(proxy)            test_ip(proxy)      #开始检测获取到的ip是否可以使用    print('抓取完成!')    print(f'抓取到的ip个数为:{len(all_ip_list)}')    print(f'可以使用的ip个数为:{len(usable_ip_list)}')    print('分别有:\n', usable_ip_list)#检测ip是否可以使用def test_ip(proxy):    #构建代理ip    proxies = {        "http": "http://" + proxy,        "https": "http://" + proxy,        # "http": proxy,        # "https": proxy,    }    try:        response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #设置timeout,使响应等待1s        response.close()        if response.status_code == 200:            usable_ip_list.append(proxy)            print(proxy, '\033[31m可用\033[0m')        else:            print(proxy, '不可用')    except:        print(proxy,'请求异常')if __name__ == '__main__':    send_request()

以上就是关于“Python爬虫怎么实现搭建代理ip池”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯