Site icon泓源视野

自己新建代理池拼采用python调用访问网页

项目地址https://github.com/lvwuwei/AutoBuy/tree/master/ProxyPool

采用googleshell安装注意1,无法使用外网端口访问

安装pip3 install -r requirements.txt 其中 版本lxml有冲突,采用pip3 uninstall lxml然后再安装指定版本pip3 install lxml==4.6.4 或者3.5

安装好用需要安装apt-get install redis服务器 然后运行服务器redis-server

可以看到 Redis、Getter、Server、Tester 都已经启动成功。

然后再开一个terminal再运行sudo python3 run.py 或者转换超级用户su然后root用户下在python3 run.py

注意使用screen -S proxy创建后台执行任务!

这时候访问 http://localhost:5555/random 即可获取一个随机可用代理。

 


使用

爬取数据包在/AutoBuy/ProxyPool/proxypool/crawlers/public/

http://www.66ip.cn/{page}.html

 

成功运行之后可以通过 http://localhost:5555/random 获取一个随机可用代理。

可以用程序对接实现,下面的示例展示了获取代理并爬取网页的过程:

import requestsproxypool_url = 'http://127.0.0.1:5555/random'target_url = 'http://httpbin.org/get'def get_random_proxy(): """ get random proxy from proxypool :return: proxy """ return requests.get(proxypool_url).text.strip()def crawl(url, proxy): """ use proxy to crawl page :param url: page url :param proxy: proxy, such as 8.8.8.8:8888 :return: html """ proxies = {'http': 'http://' + proxy} return requests.get(url, proxies=proxies).textdef main(): """ main method, entry point :return: none """ proxy = get_random_proxy() print('get random proxy', proxy) html = crawl(target_url, proxy) print(html)if __name__ == '__main__': main()

运行结果如下:

get random proxy 116.196.115.209:8080
{ "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.22.0", "X-Amzn-Trace-Id": "Root=1-5e4d7140-662d9053c0a2e513c7278364" }, "origin": "116.196.115.209", "url": "https://httpbin.org/get"
}

可以看到成功获取了代理,并请求 httpbin.org 验证了代理的可用性。

可配置项

代理池可以通过设置环境变量来配置一些参数。

开关

环境

Redis 连接

处理器

日志

以上内容均可使用环境变量配置,即在运行前设置对应环境变量值即可,如更改测试地址和 Redis 键名:

export TEST_URL=http://weibo.cnexport REDIS_KEY=proxies:weibo

即可构建一个专属于微博的代理池,有效的代理都是可以爬取微博的。


安装redis错误 再ubuntu20中 安装 apt-get install redis 然后启动redis-server 发现错误 就是没错误

查看版本redis-server -V

Exit mobile version