作者:Charles
微信公众号: Charles的皮卡丘
原文链接: https:// mp.weixin.qq.com/s/OdBr 2KhBDzmBI1GPFQteGQ
简单重构了一波之前自己开源的一个小项目,在这里重新分享一波。
安装
0. 项目地址:
https://github.com/CharlesPikachu/FreeProxy(欢迎stars,后续会考虑更好地完善该项目。)
1. pip安装
在终端运行以下命令即可:
pip install git+https://github.com/CharlesPikachu/FreeProxy.git@master
效果如下:
2. 运行setup.py安装
到项目地址下载所需的文件:
下载后解压文件,在终端运行如下命令即可:
python setup.py install
项目简介
利用requests+正则表达式爬取提供免费代理的网站上发布的最新免费代理数据,以便后续用于构建免费的爬虫代理IP池。相比于之前的版本,我删除了一些代理质量较低的代理数据源网站,并添加了一些网评代理质量比较高的代理数据源网站(部分需FQ访问,所以如果你不能FQ,有些数据源网站是无法访问的,也就是说抓取不了这部分数据了。)目前代理数据源网站包括:
- 西刺代理
- proxylistplus
- proxylist
- jiangxianli
- IP海
- ip3366
- gatherproxy
- cn-proxy
如果有什么提供高质量免费代理的网站被我遗漏了,你可以在文章下方留言,我会在后续版本中添加这些代理数据源网站进去。
使用方式
包导入,以及实现免费代理抓取:
类初始化参数:
Args:
--host: 验证代理是否可以请求host(默认为http://www.baidu.com/)
--headers: 验证host时的请求头(默认使用Chrome User-Agent)
--method: 验证host时的请求类型(GET/POST)
--post_data: POST验证时提交的data(默认为{})
--timeout: 代理最大延迟(默认为1s)
--proxy_type: http/https, 代理类型(默认为http)
类.getProxy方法参数:
Args:
--num_proxies: 需要获取的代理数量(默认为1)
--max_tries: 代理数据源网站最大请求次数(默认为5)
实例
1. 单线程
from FreeProxy import ProxyTool
pt = ProxyTool.ProxyTool()
proxies = pt.getProxy(num_proxies=2, max_tries=5)
print(proxies)
2. 多线程
import time
import threading
from FreeProxy import ProxyTool
PROXIES = []
pt = ProxyTool.ProxyTool()
num_threadings = 3
def getProxy(num, max_tries):
global PROXIES
PROXIES += pt.getProxy(num, max_tries)
for i in range(num_threadings):
t = threading.Thread(target=getProxy, args=(1, 5))
time.sleep(0.1)
t.start()
t.join()
print(PROXIES)