python-代理IP测试是否能用

说明

  • 要写一个一个爬虫,妈的总是被禁ip,公司又不愿意花钱买IP 只能找一些免费的IP,免费的IP还要测试是否能用
  • 需要注意的是整个只是Demo,并不是特别完善。需要进行完善逻辑

完善逻辑

  1. 获取有效代理的IP,放入到缓存中
  2. 使用IP的时候在去测试是否能通
  3. 不能通,缓存中剔除

依赖

  • 依赖一些包需要自己去下载

代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

import telnetlib


# 定义chrome 对象
class Driver:
    def __init__(self):
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--disable-gpu')
        self.chrome_options = chrome_options

    def getDriver(self):
        return webdriver.Chrome(options=self.chrome_options)


class Company:
    def __init__(self, driver):
        self.driver = driver

    def getCompanyDetailUrl(self):
        first_url = "http://www.goubanjia.com/"
        # 发送请求
        self.driver.get(first_url)
        # 获取IP的集合
        ipList = self.driver.find_elements_by_xpath(
            '//section[@id="services"]//div[@class="container"]//div[@class="row"]//div[@class="container-fluid"]//div[@class="row-fluid"]//div[@class="span12"]//table//tbody//tr')
        # 循环
        for ipTr in ipList:
        	# 获取IP 然后切割
            list = ipTr.find_element_by_css_selector('.ip').get_attribute("innerText").split(":", -1)
            print(list)
            try:
            	# 测试是否能pin通
                telnetlib.Telnet(list[0], list[1], timeout=3)
                print("代理ip有效!")
            except:
                print("代理ip无效!")


if __name__ == '__main__':
    # 初始化chrome
    driver = Driver()
    company = Company(driver.getDriver())
    company.getCompanyDetailUrl()  # 获取URL

另外一个页面的

  • 第一个版本好多不能用
# 定义chrome 对象
class Driver:
    def __init__(self):
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--disable-gpu')
        self.chrome_options = chrome_options

    def getDriver(self):
        return webdriver.Chrome(options=self.chrome_options)


class Company:
    def __init__(self, driver):
        self.driver = driver

    def getCompanyDetailUrl(self):
        first_url = "https://www.kuaidaili.com/free/inha/"
        # 模拟搜索公司名称
        self.driver.get(first_url)
        listDiv = self.driver.find_element_by_id("list").find_elements_by_xpath("//table//tbody//tr")
        for ipTD in listDiv:
            try:
                ip = ipTD.find_element_by_css_selector('td[data-title="IP"]').get_attribute("innerText")
                port = ipTD.find_element_by_css_selector('td[data-title="PORT"]').get_attribute('innerText')
                print(ip, port)
                telnetlib.Telnet(ip, port, timeout=2)
            except:
                print("代理ip无效!")


if __name__ == '__main__':
    # 初始化chrome
    driver = Driver()
    company = Company(driver.getDriver())
    company.getCompanyDetailUrl()  # 获取URL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值