最近想爬取微信公众号的推送内容。搜了几篇相关博客之后我就开始写代码。没过多久就报错了,检查一下发现是 ip 被封了。好叭,那我就放慢速度,爬一次暂停半分钟。
结果没过多久又被封了。行吧,那我再慢点。
…
这也太慢了!不行,不能逃避现实了,必须得学会构建 ip 池,不然以后也是个麻烦事。
然后接着搜相关博客,抄代码。
搜了半天也没搜出来一个能用的。
最终在一篇微信公众号推送里面看到了一个 GitHub 项目是构建 ip 池的。那就借来用用吧。为了跑他的代码可是费了我不少功夫,查了好多资料才跑出来。(其实还是我自己太菜了,写不出来代码就算了,现成的代码也不会用)
惊讶地发现效果非常好!很顺利的就把我想要的推送爬下来了。
现写下这篇博客来推荐大家一起来用这个项目。
首先需要安装
Docker 和 Docker-compose
Docker:
去docker官网 点这里 ,下载安装包
注意:安装结束之后他要求重启,务必保存好需要的文件之后再点击 Close and restart
重启之后弹出来这个,accept
就可以了
然后弹出来两个报错弹窗。这个点 继续
这个点链接
点这里 下载更新包。
下载好之后安装并重启。
如果这里不能正常显示版本号的话,说明是安装存在问题。重来吧
Docker-compose:
你的电脑上大概已经默认安装了 docker-vompose。控制台输入 docker-compose -v
检查一下是否已经默认安装了。
能正常显示版本信息就没问题
你可以点这里在原作者的 GitHub 上下载。如果嫌下载太慢可以去文末找百度云链接。
下载好后是一个压缩包
解压后得到一个文件夹
首先你要进入控制台(CMD)
,然后切换工作路径到 ProxyPool
文件夹
我这里 ProxyPool
文件夹在 C:\Users\sweetie\Downloads\ProxyPool-master
所以我的操作就是,进入控制台,输入
cd C:\Users\hasee\Downloads\ProxyPool-master\ProxyPool-master\proxypool
第一次运行的时候需要下载一些材料,得多等一会。
大概十分钟到二十分钟?源作者说可以通过配置一些文件实现更快的下载速度,但我不会配 (○` 3′○)
如果卡在一个界面一直不动的话,可能需要重启,然后重新进入控制台执行上述两个命令。
访问 http://localhost:5555/random
即可获取一个可用 ip
具体代码调用示例如下:
import requests
proxypool_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).text
def 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"
}
这表明我们的 ip 池是可用的。
GitHub 源项目
不想去GitHub上下载的也可以来我的公众号 “我不是wc
” 回复 021
获取百度云下载链接。