使用代理爬去微信公众号_使用代理处理反爬抓取微信文章

目标

使用代理反爬抓取微信文章,获取文章标题、内容、公众号等信息,并存储到MongoDB数据库中。

流程框架

如果要抓取微信公众号文章可以使用搜狗的搜索引擎,它会显示最新的文章,但是有两个问题需要大家注意:

如果要抓取某一个主题(比如微信风景文章)的所有记录的话,需要先登录(也就是你的请求头headers中要有登陆之后服务器返回的cookies),未登录只可以查看10页,登录之后可以查看100页

搜狗微信站点的反爬措施比较严格,如果只是用本地IP(单IP)去抓取的话肯定是不行的,这个时候我们需要用到代理池技术(通过可用随机代理去绕过反爬机制)

关于代理池的实现以及使用可以参考这篇文章:使用Redis+Flask维护动态代理池

下图展示了具体的流程框架:

(1)抓取索引页内容

def parse_index(html):

doc = pq(html)

items = doc('.news-box .news-list li .txt-box h3 a').items()

for item in items:

yield item.attr('href')def parse_index(html):

doc = pq(html)

items = doc('.news-box .news-list li .txt-box h3 a').items()

for item in items:

yield item.attr('href')

在流程框架部分我们提到,在此将要使用搜狗搜索微信站点文章,首先让我们进入搜狗搜索界面https://weixin.sogou.com/,比如输入关键字风景,就会出现微信文章的列表。

从网页的url可以看出这是一个get请求,只保留主要参数,可以把url简化为

其中,“query”代表搜索的关键词,“type”代表搜索结果的类型,“type=1”表示搜索结果是微信公众号,“type=2”表示搜索结果是微信文章,“page”也就是当前页数。

分析完网页的url组成之后,我们先解决第一个问题:保存cookie,模拟登录。

打开浏览器控制台,选择NetWork->Headers选项卡,可以看到请求的headers信息。

解决完以上问题之后,让我们尝试写一下代码获取第1-100页的网页源码:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值