目前比较有效的几种微信公众号的采集方式:
1、通过web端素材管理接口的方式
2、通过appium从手机端
3、通过逆向工程暴力获取
4、通过第三方服务接口
5、搜狗微信公众号接口(已凉)
个人及小团体对公众号内容获取数量不多的情况下一般都会采用前两种相对简单便捷成本低的方式去获取内容,不差钱的团队肯定就买第三方服务了,靠提供微信公众号采集接口的服务盈利的肯定就是逆向工程了.我介绍第一种比较简单适合小规模采集的方案

1、首先我们需要注册个属于自己的公众号平台微信公众号注册地址
2、注册成功后进入点击如图所示的素材管理
3、点击素材管理后点击如图所示的新建图文消息
4、点击新建图文消息后点击如图所示的超链接
5、点解超链接后点击如图所示的选择其他公众号
6、这时候就可以输入我们想要获取公众号内容的名字去搜索查询

7、我们通过抓包查看分析下

通过抓包也不难分析出请求参数的话就是我截图那样,稍后代码中将会呈现出来,然后通过请求response返回的内容也可以看到例如title、link、概要、更新时间等等的内容这里我们主要取title和url,我要说明一下我们通过这种方式获取的link是临时链接并不是手机端打开那样的永久链接但是也无妨我们只要通过访问临时链接把内容下载下来就可以了这个临时链接的有效时长其实也是很长时间的,如果我们想转换成永久链接我们可以通过手机端打开得到的就是永久链接地址了

大体概述下代码流程
1、调用登录函数login_wechat通过webdrive扫码登录微信公众号,这里不采用自动输入账号密码的方式登录是因为即便输入账号密码还是需要扫码确认
2、登录成功获取cookie信息保存本地cookie.txt文件
3、调用采集函数get_content获取cookie.txt的cookie值并提取token
4、拼接好我们需要的请求参数后请求素材管理中接口中我们待采集公众号信息
5、通过请求接口获取文章的title、link并实现翻页功能
6、拿到我们待采集文章的link后请求link地址下载文章内容
7、将title、link、内容对应保存csv文件

# -*- coding: utf-8 -*-
import re
import csv
import json
import time
import random
import requests
from selenium import webdriverdef login_wechat():browser = webdriver.Chrome()browser.get("https://mp.weixin.qq.com/")time.sleep(2)print("请拿手机扫码二维码登录公众号")time.sleep(30)print("登录成功")# 获取cookiescookie_items = browser.get_cookies()post = {}# 获取到的cookies是列表形式,将cookies转成json形式并存入本地名为cookie的文本中for cookie_item in cookie_items:post[cookie_item['name']] = cookie_item['value']cookie_str = json.dumps(post)with open('cookie.txt', 'w+', encoding='utf-8') as f:f.write(cookie_str)print("cookies信息已保存到本地")browser.quit()def get_content(ky):# ky为要爬取的公众号名称url = 'https://mp.weixin.qq.com' # 公众号主页header = {"HOST": "mp.weixin.qq.com","User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}# 读取上一步获取到的cookieswith open('cookie.txt', 'r', encoding='utf-8') as f:cookie = f.read()cookies = json.loads(cookie)# 增加重试连接次数session = requests.Session()session.keep_alive = False# 增加重试连接次数session.adapters.DEFAULT_RETRIES = 10time.sleep(5)# 登录之后的微信公众号首页url变化为:https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=657944522,从这里获取token信息response = session.get(url=url, cookies=cookies)token = re.findall(r'token=(\d+)', str(response.url))[0]time.sleep(2)# 搜索微信公众号的接口地址search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'# 搜索微信公众号接口需要传入的参数,有三个变量:微信公众号token、随机数random、搜索的微信公众号名字query_id = {'action': 'search_biz','token': token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'query': ky,'begin': '0','count': '5'}# 打开搜索微信公众号接口地址,需要传入相关参数信息如:cookies、params、headerssearch_response = session.get(search_url,cookies=cookies,headers=header,params=query_id)# 取搜索结果中的第一个公众号lists = search_response.json().get('list')[0]print(lists)# 获取这个公众号的fakeid,后面爬取公众号文章需要此字段fakeid = lists.get('fakeid')# 微信公众号文章接口地址appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'# 搜索文章需要传入几个参数:登录的公众号token、要爬取文章的公众号fakeid、随机数randomquery_id_data = {'token': token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'action': 'list_ex','begin': '0',  # 不同页,此参数变化,变化规则为每页加5'count': '5','query': '','fakeid': fakeid,'type': '9'}# 打开搜索的微信公众号文章列表页appmsg_response = session.get(appmsg_url,cookies=cookies,headers=header,params=query_id_data)# 获取文章总数max_num = appmsg_response.json().get('app_msg_cnt')# 每页至少有5条,获取文章总的页数,爬取时需要分页爬num = int(int(max_num) / 5)print(num)# 起始页begin参数,往后每页加5begin = 0seq = 0while num + 1 > 0:query_id_data = {'token': token,'lang': 'zh_CN','f': 'json','ajax': '1','random': random.random(),'action': 'list_ex','begin': '{}'.format(str(begin)),'count': '5','query': '','fakeid': fakeid,'type': '9'}print('正在翻页:--------------', begin/5)time.sleep(8)# 获取每一页文章的标题和链接地址,并写入本地文本中query_fakeid_response = session.get(appmsg_url,cookies=cookies,headers=header,params=query_id_data)fakeid_list = query_fakeid_response.json().get('app_msg_list')if fakeid_list:for item in fakeid_list:content_link = item.get('link')content_title = item.get('title')fileName = ky + '.txt'seq += 1content_body = session.get(content_link).textinfo = [content_title, content_link, content_body]save(ky,info)begin = int(begin)begin += 5# csv head
def csv_head(ky):ky = kyhead = ['content_title', 'content_link', 'content_body',]csvFile = open(fr'{ky}.csv', 'w', newline='', encoding='utf-8-sig')  # 设置newline,否则两行之间会空一行writer = csv.writer(csvFile)writer.writerow(head)csvFile.close()# 存储csv
def save(ky,info):ky = kycsvFile = open(fr'{ky}.csv', 'a+', newline='', encoding='utf-8-sig')  # 设置newline,否则两行之间会空一行writer = csv.writer(csvFile)writer.writerow(info)csvFile.close()if __name__ == '__main__':ky = '肯德基'login_wechat()csv_head(ky)get_content(ky)

最新微信公众号采集方案详细介绍相关推荐

  1. 微信公众号采集方案(基于Windows逆向)

    引言 目前主流的公众号采集方案只有以下几种方法 搜狗微信 无法采集历史了,而且搜索也不按时间排序.获取的数据的价值不高,不过可以通过它来获取公众号的biz. 微信公众平台 微信公众平台虽然可采集历史, ...

  2. 微信公众号数据2019_如何制作微信公众号图文素材 微信公众号采集器好用吗

    现在有很多人都会通过微信公众号来发布文章.图片,这时候就需要使用一些编辑技巧了.下面拓途数据就和大家一同来看看如何制作微信公众号图文素材,微信公众号采集器好用吗? 微信公众号图文素材 如何制作微信公众 ...

  3. 2017最新微信公众号导航系统源码_ 带会员系统和推广系统

    源码介绍 2017最新微信公众号导航系统采用PHP程序开发,是一款不错的微信公众号导航网站系统源码,非常适合做公众号导航网站来下载这个源码,而且这个微信公众号导航系统还带会员系统和推广系统. 适用范围 ...

  4. 如何做好微信公众号运营方案,需要做好这五点工作

    公众号相信大家都是非常熟悉的,这是与微信结合一起的另一个版块,我们生活在使用微信当中,偶尔都会看看公众号,现在大部分企业都有自己的公众号,通过公众号来提升品牌形象.产品营销,要做好这些,当然要找会运营 ...

  5. .NET微信公众号开发系列 - 项目介绍

    由于业务需要,需要开发微信公众号.不过没有查询到比较有用的信息,只能自己摸索前进. 写这个微信公众号开发系列,希望能提供一些帮助. 需要的功能有创建订单.查看订单.还有基本的用户管理. 由于团队人员有 ...

  6. 首个非逆向,不需要手机!的微信视频号采集方案

    历经劫难,终于搞定微信视频号采集方案 以下为视频号(环球时报)截止 2021 年 06-25 日上午 10.00 的数据 贴出部分截图

  7. 微信小程序接入关联微信公众号official-account方案总结

    微信小程序接入关联微信公众号official-account方案总结 需求描述: 最近在小程序项目中有这样的需求,在微信小程序里面显示出关联的微信公众号,让用户在小程序一步直达公众号. 解决方案: 第 ...

  8. 网上买的几百元的最新微信公众号H5游戏平台完整源码下载

    网上买的几百元的最新微信公众号H5游戏平台完整源码下载 微信Html5游戏平台源码,大家可以直接打开浏览器本地测试,到时候修改下关注链接就行,简单易学 游戏太多了,不上图了,大家自己下去研究吧! 下载 ...

  9. 微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 一.微信公众号授权步骤 首先到微信公众平台注册账号,可以看到有四种类型(服务号,订阅号,小程 ...

  10. 最新微信公众号文章数据导出软件工具

    相信大家经常都会使用微信软件,对于微信公众号都不陌生,有很多人都会经常阅读公众号的文章.下面集宝数据就给大家说说如何找到好用的微信公众号文章采集器? 如何找到好用的微信公众号文章采集器 第一步:首先, ...

最新文章

  1. 6年面试经验总结!让设计师提升进公司的能力!
  2. FPGA从Xilinx的7系列学起(6)
  3. 人工智能时代,怎样高效学习AI技术、聚焦AI行业趋势?
  4. tinyumbrella java_tinyumbrella(小雨伞)
  5. oracle通信通道的文件结尾_申请被拒?被放到WL?没消息?莫着急,这篇文章助您找到argue信的突破口!...
  6. 81. Leetcode 21. 合并两个有序链表 (排序)
  7. python 复制、移动文件到指定目录并修改名字
  8. HD Piggy-Bank完全背包
  9. 《Python数据科学指南》——1.23 采用键排序
  10. android 重新启动应用程序,在AsyncTask完成后重新启动完整的Android应用程序
  11. UML图入门学习笔记
  12. Android Webview实现文件下载功能
  13. 给apk去签名、重新签名
  14. svn 图标不显示 window10
  15. CAD图纸被设置成只读格式,如何取消?
  16. JavaScript 鼠标事件
  17. linux挂载ntfs硬盘6,CentOS 6.2 挂载 NTFS格式的硬盘
  18. srgb色彩空间_网页设计师的色彩:了解sRGB
  19. Sublime text 3(ST3) - Source Insight
  20. 字号与像素大小的关系

热门文章

  1. VSCode如何打开Interpreter
  2. Layui 数据表格合并单元格
  3. 微信小程序解决 加载图片出现渲染层网络层错误
  4. linux usb摄像头驱动程序,Linux系统下USB摄像头驱动开发
  5. SpringBoot + Vue 结合支付宝支付(3)--调用api
  6. BUG: Cannot retrieve debugging output
  7. parser.parse_known_args()理解
  8. JavaScript 鼠标事件
  9. Mikrotik RouterOS路由器和华为交换机链路聚合+VRRP+单线多拨
  10. 如何使用Keil5开发MSP430及Tiva系列开发板