需求分析
先来看一下目标网站。
这次爬取的内容是通过搜狗微信的接口获取微信文章的 url 然后提取目标文章的内容及公众号信息。
可以指定内容进行爬取
那这次需要解决的问题有哪些呢?
需要解决的问题
搜狗微信在没有登录的情况下可以爬取十页信息,我们想要获取更多的信息只能登录。在登录的情况下,爬取数据量太大会被封 IP 。这里给出的解决方案是使用代理池的方法。我这里是自己搭建了一个小的IP代理池,在我以前的文章里有详细的描述,可以 点这里 查看。
代码演示
proxy = None # 声明代理为 None 也就是开始的时候用本机的ip爬取count_max = 5 # 设置一个连接错误,如果连接超过五次都出错就停止爬取,要不然程序陷入死循环。# 请求头的设置要加上cookieheaders = {User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36,}# 获取代理def get_proxy():proxy = GetIP()return proxy.get_random_ip()# 请求页面,这里主要使用了代理,一开始使用的是本机代理,被封之后换个ip来爬。def get_request(url,count=1):global proxyif count >= count_max:print(请求太多次了,这个方法不行啦,换换吧)try:if proxy: