精英联盟总队|带大家写一波微信公众号的爬取!谁说微信爬不了的( 三 )
'''下载所有文章'''def __downloadArticles(self):print('[INFO]: 开始爬取目标公众号的所有文章内容...')if not os.path.exists(self.savedir):os.mkdir(self.savedir)fp = open('links_tmp.json', 'r', encoding='utf-8')article_infos = json.load(fp)for key, value in article_infos.items():print('[INFO]: 正在抓取文章 ——> %s' % key)pdfkit.from_url(value, os.path.join(self.savedir, key+'.pdf'), configuration=pdfkit.configuration(wkhtmltopdf=self.cfg.wkhtmltopdf_path))print('[INFO]: 已成功爬取目标公众号的所有文章内容...')注意 , 使用pdfkit前需要先安装wkhtmltox 。 如下图所示:
运行的效果大概是这样子的:
全部源码根据自己的抓包结果修改cfg.py文件:
## cfg.py# 目标公众号标识biz = 'MzAwNTA5NTYxOA=='# 微信登录后的一些标识参数pass_ticket = ''appmsg_token = '1055_YAmuAw2QG7dM3aTwSVZVqgtRdct6ilAMTwlz7g~~'# 安装的wkhtmltopdf.exe文件路径wkhtmltopdf_path = r'D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'12345678## articlesSpider.pyimport osimport timeimport jsonimport pdfkitimport randomimport requestsimport warningswarnings.filterwarnings('ignore')'''微信公众号文章爬取类'''class articlesSpider(object):def __init__(self, cfg, **kwargs):self.cfg = cfgself.session = requests.Session()self.__initialize()'''外部调用'''def run(self):self.__getArticleLinks()self.__downloadArticles()'''获得所有文章的链接'''def __getArticleLinks(self):print('[INFO]: 正在获取目标公众号的所有文章链接...')fp = open('links_tmp.json', 'w', encoding='utf-8')article_infos = {}params = {'action': 'getmsg','__biz': self.cfg.biz,'f': 'json','offset': '0','count': '10','is_ok': '1','scene': '123','uin': '777','key': '777','pass_ticket': self.cfg.pass_ticket,'wxtoken': '','appmsg_token': self.cfg.appmsg_token,'x5': '0'}while True:res = self.session.get(self.profile_url, params=params, verify=False)res_json = res.json()can_msg_continue = res_json.get('can_msg_continue', '')next_offset = res_json.get('next_offset', 10)general_msg_list = json.loads(res_json.get('general_msg_list', '{}'))params.update({'offset': next_offset})for item in general_msg_list['list']:app_msg_ext_info = item.get('app_msg_ext_info', {})if not app_msg_ext_info: continuetitle = app_msg_ext_info.get('title', '')content_url = app_msg_ext_info.get('content_url', '')if title and content_url:article_infos[title] = content_urlif app_msg_ext_info.get('is_multi', '') == 1:for article in app_msg_ext_info.get('multi_app_msg_item_list', []):title = article.get('title', '')content_url = article.get('content_url', '')if title and content_url:article_infos[title] = content_urlif can_msg_continue != 1: breakelse: time.sleep(1+random.random())json.dump(article_infos, fp)fp.close()print('[INFO]: 已成功获取目标公众号的所有文章链接, 数量为%s...' % len(list(article_infos.keys())))'''下载所有文章'''def __downloadArticles(self):print('[INFO]: 开始爬取目标公众号的所有文章内容...')if not os.path.exists(self.savedir):os.mkdir(self.savedir)fp = open('links_tmp.json', 'r', encoding='utf-8')article_infos = json.load(fp)for key, value in article_infos.items():print('[INFO]: 正在抓取文章 ——> %s' % key)key = key.replace('\\', '').replace('/', '').replace(':', '').replace(':', '') \.replace('*', '').replace('?', '').replace('?', '').replace('“', '')\.replace('"', '').replace('
推荐阅读
- 骚狐君|他的存在对鲨鱼产生了威胁,和平精英人气榜公布!牧童稳坐第一
- nba|NBA太疯狂!2组1-1,1组2-2,联盟第1最悲惨!黑马逆袭,成赢家
- 大华联盟|朱元璋下令锯开棺材 6个大字朱元璋脸色大变,刘伯温下葬后
- 英雄联盟|余霜分手后开启奔放模式,一天连晒N组自拍,网友直呼太美了!
- 卡玛拉|《复仇者联盟》:不只是游戏,更是一部优秀的电影
- 和平精英|??“吃鸡”体验服已无更新,暗夜危机2.0,或将被1款新游戏代替!
- 英雄联盟|LOL九周年奖励发放,玩家开始“比惨大会”,你是欧皇还是非酋?
- 悠游侠|漫威复仇者联盟装备怎么升级 装备等级提升方法介绍
- 和平精英|和平精英三大一哥宣告诞生:王小歪排名第一,日赚1W3!
- 英雄联盟|LEC解说强行给帽皇树敌:不管你们怎么说,Caps都会打爆左手!
