[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爬取文章

通过这种方式是没办法得到阅读量和点赞数的,因为网页打开公众号文章是没有阅读数和点赞数的

代码

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. 微信公众号文章爬取方法整理

    微信公众号文章爬取方法整理 1.用python爬取 http://blog.csdn.net/d1240673769/article/details/75907152 实现方法:通过微信提供的公众号文 ...

  2. python自动推送消息_Python自动接收微信群消息并推送相应的公众号文章

    原标题:Python自动接收微信群消息并推送相应的公众号文章 封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 用书教师可以联系 ...

  3. 微信公众号文章爬取下载各种格式

    微信公众号阅读成为许多人每天的日常习惯,相信在每天关注的微信公众号中,总会有一些作者在持续地输出优质内容. 这些内容也许是你所处领域的精华,也许其中的观点启人深思,也许是单纯地喜欢上了某个大V的文字. ...

  4. python3实现微信公众号文章爬取

    基于搜狗微信的文章爬取 前言:文章仅用于学习交流,不足之处欢迎小伙伴指正! 一.功能介绍: 已实现功能: 1.爬取搜狗微信上的分类一栏的所有事件及其他的所有标题事件和加载更多,返回文章链接与标题,并存 ...

  5. 使用WebCollector爬虫框架进行微信公众号文章爬取并持久化

    〇.Java爬虫框架有哪些? 1.nutch:Apache下开源爬虫项目,适合做搜索引擎,分布式爬虫只是其中一个功能,功能丰富,文档完整. 2.heritrix:比较成熟,用的人较多,有自己的web管 ...

  6. java 抓取搜狗微信_搜狗微信公众号文章抓取

    机器能做的事就别让人来做! 目标: 抓取特定微信公众号文章 思路:利用selenium模拟浏览器行为,进行抓取(理由:搜狗已将文章链接进行处理,且页面为动态生成) 框架: 步骤: 1.登录搜狗 a.找 ...

  7. 关于微信公众号文章抓取

    今天公司要我抓取微信公众号文章,我百度了半天得到的方法有三种: 具体内容我就不复制了请去下面这个链接去看,写的挺好 微信公众号文章采集方案 在三者中我选择了比较稳妥的第二种:对手机微信进行中间人攻击 ...

  8. 搜狗微信公众号文章抓取

    机器能做的事就别让人来做! 目标: 抓取特定微信公众号文章 思路:利用selenium模拟浏览器行为,进行抓取(理由:搜狗已将文章链接进行处理,且页面为动态生成) 框架: 步骤: 1.登录搜狗 a.找 ...

  9. 微信公众号发送小程序卡片_如何在公众号文章中添加小程序卡片

    在公众号中添加小程序卡片可以给阅读者更好的文章阅读体验,腾讯地图+小程序可以在文章内容中提供位置卡片和路线规划卡片,适用于各类含有地点信息的文章推文. 绑定腾讯地图+小程序的方法如下: 第一步:公众号 ...

最新文章

  1. a-awk 计算数值最大,最小,平均值并保留指定位数
  2. Java 8中一些常用的全新的函数式接口
  3. zip/unzip 命令
  4. python真的那么强大嘛-这些 Python 库真的很“冷”,但是却很强大
  5. linux裸设备文件系统,Linux当中的文件系统
  6. 使用shell进行mvn打包,根据mvn是否打包成功来进行下一步操作
  7. [WPF系列]-DynamicResource与StaticResource的区别
  8. AC自动机build时的一点小优化
  9. 基于Prometheus的.NET 4.x应用服务监控
  10. Windows和linux提权方法,Windows与Linux本地用户提权体验(一)
  11. 语言 OJ 高低位逆转_用于检测污水井内水位高低的报警器--液位开关
  12. mysql 分段执行_19个MySQL优化技巧,索引优化这样做最有效!
  13. Android ActionBar示例教程
  14. Unity 连接MySql数据库
  15. mac 下载appium
  16. python爬虫验证码的处理(云打码)_python爬虫验证码的处理(云打码)
  17. 文曲星猜数字游戏java代码_急求一份完整的文曲星上的猜数字游戏的课程设计...
  18. html 单元格被撑开_CSS教程:表格不被撑开的解决办法—css教程
  19. 程序是怎么跑起来的——虚拟内存与动态链接
  20. 高数下|级数6|手写笔记(幂级数求和)

热门文章

  1. 免费邮箱,谁更可靠?6款常用免费邮箱收信效果对比测试
  2. 如何爬取微博全部粉丝python_让你了解python的强大!【 登录新浪微博爬取粉丝信息】...
  3. windows10和kali双系统(从uefi启动)
  4. Idea开发工具操作git回滚提交步骤
  5. 面向过程编程思想和面向对象编程思想
  6. 背后 :数据能干什么,值得我们好好思考
  7. 网易云音乐怎么剪辑音乐并保存,酷狗音乐怎么截取一段音乐并保存
  8. ssh 删除文件夹 命令
  9. Win10系统下CAD2009 VBA加滚轮
  10. Java虚拟机常用的性能监控工具