很多的微信公众号都提供了质量比较高的文章阅读,对于自己喜欢的微信公众号,所以想做个微信公众号爬虫,爬取相关公众号的所有文章。抓取公众号的所有的文章,需要获取两个比较重要的参数。一个是微信公众号的唯一ID(__biz)和获取单一公众号的文章权限值wap_sid2。接下来说一下思路。
/*', 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A403 MicroMessenger/6.5.18 NetType/WIFI Language/zh_CN', 'Accept-Language': 'zh-cn', 'X-Requested-With': 'XMLHttpRequest', 'X-WECHAT-KEY': '62526065241838a5d44f7e7e14d5ffa3e87f079dc50a66e615fe9b6169c8fdde0f7b9f36f3897212092d73a3a223ffd21514b690dd8503b774918d8e86dfabbf46d1aedb66a2c7d29b8cc4f017eadee6', 'X-WECHAT-UIN': 'MTU2MzIxNjQwMQ%3D%3D', 'cookie':';wxuin=1563216401;pass_ticket=oQDl45NRtfvQIxv2j2pYDSOOeflIXU7V3x1TUaOTpi6SkMp2B3fJwF6TE40ATCpU;ua_id=Wz1u21T8nrdNEyNaAAAAAOcFaBcyz4SH5DoQIVDcnao=;pgv_pvid=7103943278;sd_cookie_crttime=1501115135519;sd_userid=8661501115135519;3g_guest_id=-8872936809911279616;tvfe_boss_uuid=8ed9ed1b3a838836;mobileUV=1_15c8d374ca8_da9c8;pgv_pvi=8005854208' } biz=item["biz"] #主要验证是wap_sid2;pass_ticket不一样无所谓 headers["cookie"]="wap_sid2="+item["wap_sid2"]+headers["cookie"] yield Request(url=self.url.format(biz=biz,index="10"),headers=headers,callback=self.parse,dont_filter=True,meta={"biz":biz,"headers":headers},) def parse(self, response): biz=response.request.meta["biz"] headers=response.request.meta["headers"] resText=json.loads(response.text) print(resText) list=json.loads(resText["general_msg_list"]) print(list) yield list if resText["can_msg_continue"]==1: self.count=self.count+10 yield Request(url=self.url.format(biz=biz,index=str(self.count)),headers=headers,callback=self.parse,dont_filter=True,meta={"biz":biz,"headers":headers}) else: print("end")
static function onBeforeResponse(oSession: Session) { if (oSession.HostnameIs("mp.weixin.qq.com") && oSession.uriContains("/mp/profile_ext?action=home")) { oSession["ui-color"] = "orange"; oSession.SaveResponse("C:\Users\Administrator\Desktop\2.txt",false); //oSession.SaveResponseBody("C:\Users\Administrator\Desktop\1.txt") } if (m_Hide304s && oSession.responseCode == 304) { oSession["ui-hide"] = "true"; } }
源代码的readme.md文件介绍使用的方式,需要可以直接到github上面获取源码,github源码地址;喜欢的给个star哟。
其他类似文章
作者:Evtion
链接:https://www.jianshu.com/p/67a8f5c92b49