微信公众号文章爬取

需求

爬取一些微信公众号的文章

数据来源

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微信公众号文章爬取相关推荐

  1. python公众号教学_Python微信公众号后台开发教程

    本篇文章开启Python开发微信公众号后台 准备: 云服务平台:(我用的是京东云的) 公众号:自己注册一个就行 Git:代码管理平台 了解平台 进入公众号后台,查看开发相关项 基本配置(服务器配置等) ...

  2. python 公众号菜单_Python微信公众号后台开发003:自定义菜单

    有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...

  3. python交通调查数据处理_Python突破高德API限制爬取交通态势数据+GIS可视化(超详细)...

    一.需求: 爬取高德的交通态势API,将数据可视化为含有交通态势信息的矢量路网数据. 二.使用的工具: Python IDLE.记事本编辑器.ArcGIS 10.2.申请的高德开发者KEY(免费). ...

  4. python爬虫模块排名_Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析

    上次使用了beautifulsoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...

  5. 基于python的音乐数据分析_Python对QQ音乐进行爬取并进行数据分析

    三方包引入 使用到了以下包: 爬虫 scrapy 网络测试 requests 数据分析 numpy和pandas 绘图 matplotlib和wordcloud pip install scrapy ...

  6. python功能性爬虫案例_Python爬虫实现使用beautifulSoup4爬取名言网功能案例

    本文实例讲述了Python爬虫实现使用beautifulSoup4爬取名言网功能.分享给大家供大家参考,具体如下: 爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) ...

  7. python爬虫经典段子_Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  8. python 公众号 自动回复_python微信公众号之关注公众号自动回复

    我们知道一旦使用开发者模式,我们就无法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有自己写才可以. 如图所示,我们无法直接使用此功能. 那么接着上一个博客,我们完成了关键词自动回复功能,博 ...

  9. python爬虫进程池_python爬虫之进程池爬取(世纪佳缘案例)

    from concurrent.futures import ProcessPoolExecutor import requests import time,re,json from lxml.htm ...

  10. python模拟app请求_python + 爬虫 + fiddler + 夜神模拟器 爬取app(1)

    抓包 抓包是爬虫里面经常用到的一个词,完整的应该叫做抓取数据请求响应包 ,而Fiddler这款工具就是干这个的 普通https抓包设置 打开Fiddler ------> Options .然后 ...

最新文章

  1. Proguard 部分类不混淆的技巧
  2. Repeater嵌套绑定Repeater[转]
  3. Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)...
  4. 20101029总结
  5. js 获取电脑 硬盘序列号_来将何人报上名来!解密电脑是如何识别硬盘的
  6. .NET平台相关概念(简单了解)
  7. 二叉树的前序、中序和后序遍历介绍及案例
  8. haddler处理队列 netty_如何实现延迟队列
  9. 期权回测框架设计思路
  10. 12如何隐藏dock栏_ iOS 13 隐藏 Dock栏,一张神奇壁纸就可以
  11. remoting例子
  12. 安卓调用系统录像功能:1、启动录像返回视频,2、启动录像将视频存储在指定路径下
  13. delphi控件属性大全-详解-简介
  14. leetcode—11.队列题型python解答
  15. 万物互联的根底就是嵌入式,小到智能手表,大到智能汽车,能落地的支撑之一就是嵌入式。
  16. Python的一些单行代码(摘抄)
  17. linux 下压缩解压命令
  18. 微信公众号实现消息模板的推送
  19. PowerBI使用折线图分析异常数据
  20. 微信公众号一次性订阅消息功能开发实践

热门文章

  1. 堆排序 Java实现
  2. 伪静态化不正常,电脑打不开贴子,手机可以
  3. Javascript 调用MSAgent(调用office助手显示动画)
  4. 疯狂星期四,但是程序员
  5. 基于python下django框架 实现闲置物品二手跳蚤市场交易系统详细设计
  6. 冰点下载器手机版apk_冰点下载器安卓版下载
  7. Java网络编程总结
  8. 渗透之——Metasploit命令及模块
  9. easyflash 教程
  10. Android 游戏开发工具包 (AGDK)