Python爬虫 免费爬取代理并测试可用性

     话不多说直接贴代码

import requests,re,telnetlib,chardet,random


class GetProxy:
    def __init__(self):
        self.header={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.43"}
    #获取网页源码(解决网页乱码问题)
    def get_pageResource(self,url):
        temp_content=requests.get(url=url,headers=self.header).content
        encode=chardet.detect(temp_content)['encoding'].casefold()
        if encode!="utf-8":
           page_content=requests.get(url=url,headers=self.header).text
           page_content=page_content.encode("ISO-8859-1").decode(f"{encode}")
        else:
           page_content=requests.get(url=url,headers=self.header).text
        return page_content
      

    #解析网页源码
    def get_IpaddrAndPort(self,page_content):
        pattern_allInfo='<td>(.*?)</td>'
        allReault=re.findall(pattern_allInfo,page_content)#模糊匹配

        pattern_address="\d{2,3}\.\d{2,3}\.\d{2,3}\.\d{2,3}"#在结果里面匹配ip地址('161.35.161.38', '80', '美国', '高匿代理', '2022年03月27日14时 验证',)
        pattern_port="^\d{2,4}$"#在结果里面匹配端口号
        address=[]
        port=[]
        for i in allReault:
            temp_address=re.findall(pattern_address,i)
            temp_port=re.findall(pattern_port,i)
            if len(temp_address)!=0:
                address.append(temp_address)
            if len(temp_port)!=0:
                port.append(temp_port)
        finalResult=[]
        for i in range(len(address)):
            try:
               finalResult.append(f"{address[i][0]}:{port[i][0]}")
            except Exception as a:
                finalResult.clear()
                for j in range(len(port)):
                    finalResult.append(f"{address[i][0]}:{port[i][0]}")
        self.test_Agent(finalResult)

    #测试代理地址是否可用
    def test_Agent(self,ipAddress):
        proxy=[]
        for i in range(len(ipAddress)):
            ipaddrsss,port=ipAddress[i].split(":")
            try:
               telnetlib.Telnet(host=ipaddrsss,port=port,timeout=3)
               print(f"{ipaddrsss}:{port}可用")
            except Exception as e:
               print(f"{ipaddrsss}:{port}不可用")
        return proxy


getPro=GetProxy()
proxy=['http://ip.yqie.com/ipproxy.htm','http://www.ip3366.net/']
for i in range(len(proxy)):
    page_content=getPro.get_pageResource(proxy[i])
    ipProxy=getPro.get_IpaddrAndPort(page_content)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

Znovko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值