python多线程获取代理ip并进行验证

import sys
import threading

from bs4 import BeautifulSoup
import urllib.request
import requests
import os

lock = threading.RLock()#创建锁

def getIp(i):
    #创建文件
    b=os.getcwd()#当前程序路径
    file_handle = open(b + '/ip.txt',mode='a') #打开文件
    url = "https://www.89ip.cn/index_{}.html".format(i)
    response = urllib.request.urlopen(url)
    html = response.read().decode('utf-8')
    soup = BeautifulSoup(html, 'html.parser')
    tr = soup.select('div.layui-row.layui-col-space15 > div.layui-col-md8 > div > div.layui-form > table > tbody > tr')
    for trs in tr:
        thisIP = trs.select('td:nth-child(1)')[0].get_text().strip() + ':' + trs.select('td:nth-child(2)')[
            0].get_text().strip()
        proxy = {
            'http': 'http://' + thisIP,
            'https': 'https://' + thisIP
        }
        head = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
            'Connection': 'keep-alive'}
        p = None
        try:
            p = requests.get('http://icanhazip.com', headers=head, proxies=proxy)
            print(p.text)
            print(thisIP + '====>代理成功')
            if lock.acquire():#加锁
                file_handle.write(thisIP + '\n')  # 写入文本
                file_handle.flush()
                lock.release()#解锁
        except:
            print(thisIP + '---->失败!')

    file_handle.close()#关闭文件


if __name__ == '__main__':
    # 设置多线程
    for i in range(1,205,1):
        tp_Thread = threading.Thread(target=getIp,args=(i,))
        tp_Thread.start()



本文只用于学习,切勿用于非法用途,非法使用一系列后果自负

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值