专栏首页Kirin博客python代理ip检测

python代理ip检测

今天刚从老家回来,劳碌了几天了。。。干活是真滴累啊,
回来刚记起来我数据库里还存着上次qiyunip抓下来的代理ip
所以就花了几分钟来写了这个脚本来检测一下代理ip是否可用
因为是在数据库里面的了,这个运行起来比较省事,
因为最开始我写的是单线程的,所以运行起来每一个ip最少要花3s,比较浪费时间
一共是9700多个ip,开始的时候我单线程跑了1000个左右,实在是等不了了
所以我又花了几分钟优化了一下,(加了个多进程,10个进程跑起来还是挺快的)
经过优化后的多进程把剩下的9k多ip跑完共花了37分钟左右,如果按照3s一个
单线来跑的话达到了可怕的8h,想想都头皮发麻,咦惹。。。。
下面是完整的代码

import pymssql
import requests
import jsonimport time
import multiprocessing
# -*- coding:gb2312 -*- # 设置编码格式,这里和数据库一样,以免乱码
sql=pymssql.connect('localhost','账号不能告诉你噢','密码也不可以哦','student',autocommit=True) # 这里是链接到数据库,并自动提交
headers={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3751.400',
}
a=sql.cursor() # 建立游标
a.execute('''select IP,PORT from qiyunip''') # 执行查询语句
q=a.fetchall() # 获取查询的数据

def delete(x): # 定义从数据库删除没用的ip方法
a=sql.cursor()
a.execute(f'''delete from qiyunip where (IP='{x}')''')

def jiance(x): # 检测代理ip是否可用方法
t={'http':x} # 构造代理ip
try:
html=requests.get('http://666cc.cn',headers=headers,proxies=t,timeout=3)# 发送请求并设置超时
if html.status_code==200:
print('可用',x)
except Exception as e: # 错误捕捉,以免程序遇到错误就中断了
print('不可用,删除 ',x)
aaa = x.find(':') # 字符串拼接方法
delete(x[:aaa]) # 删除方法
if __name__ == '__main__':
    s_time=time.time() # 开始计时
    pool=multiprocessing.Pool(10) # 创建进程池,并设置开启10个进程
    for x in q:
        aa=':'.join(x).split()
        pool.apply_async(jiance,(aa[0],)) # 多进程需要传入一个参数
    pool.close() # 进程池满后关闭盖子(满了后不再放入进程)
    pool.join() # 进程阻塞
    print('总共用时',(time.time()-s_time)/60,'分钟') # 结束打印总时长

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 爬虫之搭建代理ip池–测试代理ip可用性

    kirin
  • 多进程爬取电影

    kirin
  • Vue中watch的简单应用

    如果对应一个对象,键是观察表达式,值是对应回调,值也可以是方法名,或者是对象,包含选项。

    kirin
  • 渗透测试中SMB服务(139、445端口)枚举汇总

    # msfconsole -r /usr/share/metasploit-framwork/scripts/resource/smb_checks.rc"

    字节脉搏实验室
  • 根据大小写字母单列拆分

      昨天同事遇到了这个问题,就帮忙看了一下,顺便温习一下好些时候因为LINQ而没用的SQL函数,喜新厌旧,这样不对呀~

    Isaac Zhang
  • 微信小程序订阅消息功能

    消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。

    达达前端
  • 论文阅读学习 - AffordanceNet for Object Affordance Detection

    Faster R-CNN-RPN,RPN 与 backbone 网络共享权重,并输出在不同 size 的 bounding boxes(RoI/object p...

    AIHGF
  • 我的日志分析之道 | 简单的Web日志分析脚本

    前言 长话短说,事情的起因是这样的,由于工作原因需要分析网站日志,服务器是windows,iis日志,在网上找了找,github找了找,居然没找到,看来只有自己...

    FB客服
  • 修改Visual Studio Code的自定义键盘快捷键

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 修改Visual Studio Code的自定义键盘快捷键

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券