快代理ip爬取 并验证

目标地址

import requests
import parsel
import time

def chenk_ip(proxies_list):
    '''检测代理 IP 的可用性'''
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
    }
    can_user = []
    for proxie in proxies_list:
        try:
            requests.get('http://www.baidu.com',headers=headers,proxies=proxie,timeout=0.2)
            can_user.append(proxie)
        except Exception as e:
            print(e)
    return can_user


# 进行一个翻页
# 构建一个空列表 ,用于将  ip (类似字典)存入此列表
proxies_list = []
for page in range(1,6):
    print("======正在爬取第{}页数据======".format(page))
    # 1.分析目标网页,确定 URL  headers 参数
    link = 'https://www.kuaidaili.com/free/inha/{}/'.format(str(page))
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
    }
    # 2.发送请求,或取响应数据
    r = requests.get(link,headers=headers)
    # print(r.status_code)
    data = r.text
    #print(data)
    # 3.解析数据---parser,转换为 Selector对象,Selector对象具有xpath方法,能够对转换的数据进行
     # 3.1 数据转换
    html_data = parsel.Selector(data)
      #  3.2 数据提取
      # 找出包含数据的最小父级标签
      #  一层一层的找到数据的具体位置
    parsel_list = html_data.xpath('//table[@class="table table-bordered table-striped"]/tbody/tr')
    #   print(parser_list)   .extract() 取出数据通常两个以上

     #  代理 IP 的格式   {"ip协议":"ip地址:port"}
     # 3.3 数据二次提取(保证还是 Selector 的对象--故将 .extract()   剔除 )  循环遍历
     # 构建一个空列表 ,用于将  ip (类似字典)存入此列表
    for tr in parsel_list:
        parsel_dict = {}
        # 用于将 ip  存入当中 ,方便存入空列表中
        #print(tr)
        htpp_type = tr.xpath('./td[4]/text()').extract_first()
        # 数据只有一个时 可以使用
        #  此数据的类型是  HTTP 也就是  ip  协议
        # ./  表示当前节点   在 html 列表索引 从1 开始
        #此为 第 4 个数据
        #print(htpp_type)
        ip_num= tr.xpath('./td[1]/text()').extract_first()
        #  此数据的类型是   IP  也就是ip地址
       # print(ip_num)
        ip_port = tr.xpath('./td[2]/text()').extract_first()
        # 此数据类型 是   PORT   也就是 port
        #print(ip_port)
        #print(htpp_type,ip_num,ip_port)

        # 构建ip的字典
        parsel_dict[htpp_type] = ip_num+':'+ip_port
        #print(parsel_dict)
    # 将 ip的 字典内容 存入定义好的 空列表中
        proxies_list.append(parsel_dict)
        time.sleep(0.5) # 针对于静态网页翻页时需要等待时间


print(proxies_list)
print("获取到的 IP 数量: ",len(proxies_list),'个')

#  调用检测代理 IP 的函数
can_user = chenk_ip(proxies_list)
print("能用的IP: ",can_user)
print("能用的IP数量: ",len(can_user),'个')



运行代码结果截图:
在这里插入图片描述

——————————END

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]提供了一个示例代码,用于爬取西刺代理网站上的免费代理IP。这段代码使用了BeautifulSoup库来解析网页,并提取出IP地址和端口号。通过调用get_ip_list函数,可以获取到爬取到的代理IP列表。 引用\[2\]提供了一个检测IP可用性的函数。该函数使用了requests库发送请求,并设置了代理IP。如果请求成功(状态码为200),则将该代理IP保存在另一个列表中。 根据这些引用内容,你可以使用这些代码来实现一个爬虫代理IP的功能。首先,你可以使用引用\[1\]中的代码来爬取西刺代理网站上的免费代理IP。然后,使用引用\[2\]中的函数来检测这些代理IP的可用性。最后,你可以根据引用\[3\]中的运行结果来验证你的代码是否成功获取到了代理IP。 请注意,这只是一个示例代码,你可以根据自己的需求进行修改和优化。同时,使用代理IP需要遵守相关法律法规和网站的使用规定,确保合法合规地使用代理IP。 #### 引用[.reference_title] - *1* *3* [Python网络爬虫(五)——获取代理IP](https://blog.csdn.net/weixin_40431584/article/details/89736159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python爬虫实战(二):爬取代理构建代理IP池](https://blog.csdn.net/yuan2019035055/article/details/121334216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值