python公众号文章_python微信公众号文章爬取
微信公众号文章爬取
需求
爬取一些微信公众号的文章
数据来源
1.搜狗微信搜索,可以搜索微信公众号文章,但只能显示该公众号最近十篇的文章
2.通过个人微信公众号中的素材管理,查看其他微信公众号文章
步骤
1.手动从网站上获取cookie通过cookie登陆
2.从请求url中获取token
3.拼接参数请求https://mp.weixin.qq.com/cgi-bin/searchbiz获取公众号的fakeid也就是biz
4.拼接参数请求https://mp.weixin.qq.com/cgi-bin/appmsg?获取文章列表信息
5.通过文章url爬取文章
通过这种方式是没办法得到阅读量和点赞数的,因为网页打开公众号文章是没有阅读数和点赞数的
代码
github仓库地址
import requests
import json
import re
import time
class WeChatCrawler():
def __init__(self, wxList):
self.wxList = wxList
self.cookies = self.__getCookiesFromText()
self.token = self.__getToken()
self.headers = {
"HOST": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"
}
self.searchBizParam = {
'action': 'search_biz',
'token': self.token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'query': '',
'begin': '0',
'count': '5',
}
self.getMsgListParam = {
'token': self.token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'action': 'list_ex',
'begin': '0',
'count': '5',
'query': '',
'fakeid': '',
'type': '9'
}
def __getCookiesFromText(self):
# 手动获取cookie
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookieStr = f.read()
# 处理cookieStr格式转化成json
cookieStr = "{\"" + cookieStr + "\"}"
cookieStr = cookieStr.replace("rewardsn=;", "").replace(";", "\",\"").replace("=", "\":\"").replace(
"\":\"\"", "=\"").replace(' ', '')
# print(cookieStr)
cookies = json.loads(cookieStr)
return cookies
def __getToken(self):
url = 'https://mp.weixin.qq.com'
response = requests.get(url=url, cookies=self.cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
return token
def __getWXFakeid(self, wx):
searchUrl = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
self.searchBizParam['query'] = wx
searchResponse = requests.get(searchUrl, cookies=self.cookies, headers=self.headers, params=self.searchBizParam)
fakeid = searchResponse.json().get('list')[0].get('fakeid')
return fakeid
def __getWXMsgCnt(self, fakeId):
self.getMsgListParam['fakeid'] = fakeId
appmsgUrl = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
appmsgResponse = requests.get(appmsgUrl, cookies=self.cookies, headers=self.headers,
params=self.getMsgListParam)
wxMsgCnt = appmsgResponse.json().get('app_msg_cnt')
return wxMsgCnt
def __getWXMsgList(self, fakeId):
appmsgUrl = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
wxMsgCnt = self.__getWXMsgCnt(fakeId)
if wxMsgCnt is not None:
pages = int(wxMsgCnt) // 5
begin = 0
for _ in range(pages):
print('====翻页====', begin)
self.getMsgListParam['begin'] = str(begin)
msgListResponse = requests.get(appmsgUrl, cookies=self.cookies, headers=self.headers,
params=self.getMsgListParam)
msgList = msgListResponse.json().get('app_msg_list')
for item in msgList:
# todo more
msgLink = item.get('link')
print(msgLink)
msgTitle = item.get('title')
print(msgTitle)
begin += 5
time.sleep(3)
def runCrawler(self):
fakeIds = list(map(self.__getWXFakeid, self.wxList))
list(map(self.__getWXMsgList, fakeIds))
if __name__ == '__main__':
# example
wxList = ['量子位', ]
wc = WeChatCrawler(wxList)
wc.runCrawler()
python公众号文章_python微信公众号文章爬取相关推荐
- python公众号教学_Python微信公众号后台开发教程
本篇文章开启Python开发微信公众号后台 准备: 云服务平台:(我用的是京东云的) 公众号:自己注册一个就行 Git:代码管理平台 了解平台 进入公众号后台,查看开发相关项 基本配置(服务器配置等) ...
- python 公众号菜单_Python微信公众号后台开发003:自定义菜单
有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...
- python交通调查数据处理_Python突破高德API限制爬取交通态势数据+GIS可视化(超详细)...
一.需求: 爬取高德的交通态势API,将数据可视化为含有交通态势信息的矢量路网数据. 二.使用的工具: Python IDLE.记事本编辑器.ArcGIS 10.2.申请的高德开发者KEY(免费). ...
- python爬虫模块排名_Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析
上次使用了beautifulsoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...
- 基于python的音乐数据分析_Python对QQ音乐进行爬取并进行数据分析
三方包引入 使用到了以下包: 爬虫 scrapy 网络测试 requests 数据分析 numpy和pandas 绘图 matplotlib和wordcloud pip install scrapy ...
- python功能性爬虫案例_Python爬虫实现使用beautifulSoup4爬取名言网功能案例
本文实例讲述了Python爬虫实现使用beautifulSoup4爬取名言网功能.分享给大家供大家参考,具体如下: 爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) ...
- python爬虫经典段子_Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- python 公众号 自动回复_python微信公众号之关注公众号自动回复
我们知道一旦使用开发者模式,我们就无法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有自己写才可以. 如图所示,我们无法直接使用此功能. 那么接着上一个博客,我们完成了关键词自动回复功能,博 ...
- python爬虫进程池_python爬虫之进程池爬取(世纪佳缘案例)
from concurrent.futures import ProcessPoolExecutor import requests import time,re,json from lxml.htm ...
- python模拟app请求_python + 爬虫 + fiddler + 夜神模拟器 爬取app(1)
抓包 抓包是爬虫里面经常用到的一个词,完整的应该叫做抓取数据请求响应包 ,而Fiddler这款工具就是干这个的 普通https抓包设置 打开Fiddler ------> Options .然后 ...
最新文章
- Proguard 部分类不混淆的技巧
- Repeater嵌套绑定Repeater[转]
- Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)...
- 20101029总结
- js 获取电脑 硬盘序列号_来将何人报上名来!解密电脑是如何识别硬盘的
- .NET平台相关概念(简单了解)
- 二叉树的前序、中序和后序遍历介绍及案例
- haddler处理队列 netty_如何实现延迟队列
- 期权回测框架设计思路
- 12如何隐藏dock栏_ iOS 13 隐藏 Dock栏,一张神奇壁纸就可以
- remoting例子
- 安卓调用系统录像功能:1、启动录像返回视频,2、启动录像将视频存储在指定路径下
- delphi控件属性大全-详解-简介
- leetcode—11.队列题型python解答
- 万物互联的根底就是嵌入式,小到智能手表,大到智能汽车,能落地的支撑之一就是嵌入式。
- Python的一些单行代码(摘抄)
- linux 下压缩解压命令
- 微信公众号实现消息模板的推送
- PowerBI使用折线图分析异常数据
- 微信公众号一次性订阅消息功能开发实践