分享:采集微信公众号文章列表页

优采云 发布时间: 2022-10-09 04:05

  分享:采集微信公众号文章列表页

  querylist采集微信公众号文章的以微信为采集源的post请求,一般请求对应的url会写在responseheader里面(比如getxxx)。用户点击post请求提交的表单之后,微信公众号的服务器会给你返回user_id。这个user_id就是你要爬取的微信公众号文章所在的链接。我们采用的是requests的http库。

  

  该库为支持异步请求提供了get、post、process.environment以及自己定义的options,options的详细解释见我们自己写的爬虫文章。与微信官方的解释一致。导入库:importrequestsheaders={'user-agent':'mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/48.0.1925.156safari/537.36'}opener=requests.build_opener(headers)xhr=opener.build_xmlhttprequest(headers=headers)xhr.read()url=';sub=770'forhinxhr.get(url):m=xhr.post(url,data={'key':key,'time':'1536772046'})content=xhr.decode('utf-8')print(content)把url参数设为user_id获取微信公众号文章所在的链接,将http函数的对应post请求的user_id直接post过去。

  之后请求回来的对应链接即可拿到,如post请求回来的链接是:。不同的是手动点击微信公众号文章会先跳转到微信公众号文章列表页,然后请求获取文章详情页。前两次请求的时候返回的是空字符串,之后是一个user_id(这里的user_id是post请求的请求参数,后面会提到)。如图所示:如果需要爬取不限制次数爬取的文章:可以让爬虫把上述post请求中的user_id作为http参数。

  

  这个东西其实就是get的xmlhttprequest.getheader()方法返回的参数。上图中,最后一次点击微信公众号文章会返回的是k_request_id值,具体参见我们的博客文章的附件图文详解中,post请求def的参数的一般解释见我的guido'sblog博客[1]。请求的headers可以直接修改user_id,返回的user_id就是变成对应的请求次数(当然,这里是可以随便取,方法有很多,不一定非要这个,实际情况请先尝试。

  有错误的话可以及时沟通。重新说明的意思是假如你的方法中写了user_id=xxx,那么请求请求回来的id数字就应该是{{id}})。这里首先说明,微信的服务器对于post请求是禁止直接通过文章列表页的,而是要走process.environment去请求,这就牵扯到请求参数user_id和请求次数的问题。官方文档说一般要求有success回调。有意思的是我。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线