微信公众号获取思路

常用的微信公众号文章获取方法有搜狐、微信公众号主页获取和api接口等多个方法。
听说搜狐最近不怎么好用了,之前用的api接口也频繁维护,所以用了微信公众平台来进行数据爬取。
首先登陆自己的微信公众平台,没有账号的可以注册一个。进来之后找“图文信息”,就是写公众号的地方

点进去后就是写公众号文章的界面,在界面中找到“超链接” 的字段,在这里就可以对其他的公众号进行检索。

以“python”为例,输入要检索的公众号名称,在显示的公众号中选择要采集的公众号

点开浏览器的检查,找到network中,下图里的这个链接,而右边的Request URL才是存储公众号数据的真实链接。说明这是个json网页。

采集实例

以公众号“python”的 链接 为例对网址进行分析。

https://mp.weixin.qq.com/cgi-bin/appmsg:微信公众平台的链接
"token": "163455614",     #需要定期修改的token
"lang": "zh_CN", #语言
"f": "json",
"ajax": "1",  #显示几天的文章
"action": "list_ex"
"begin": "0", #起始页面
"count": "1", #计数
"query": "",
"fakeid": 'MzIwNDA1OTM4NQ==',  #公众号唯一编码
"type": "9",

既然发现了fakeid是代表公众号的唯一编码,那接下来只需要把需要的公众号的fakeid找到就行,我随意找了三个公众号的进行测试。

fakeid=[ 'MzIwNDA1OTM4NQ==','MzkxNzAwMDkwNQ==','MjM5NzI0NTY3Mg==']
#若增加公众号需要增加fakeid

那接下来就是对网址的请求
首先导入需要的库

import time
import requests
from lxml import etree
import pandas as pd
import json
import numpy as np
import datetime
import urllib3
from urllib3.exceptions import InsecureRequestWarningurllib3.disable_warnings(InsecureRequestWarning)

由于不想重复登录公众号平台,可以使用cookie避开登陆,对文章求情前需要找到网页的cookie和User-Agent,由于微信公众号回定期刷新,这个cookie和上面的token都要定期更换。
为避免反扒最好也找个代理ip

headers = {"Cookie": "appmsglist_action_3567997841=card;wxuin=49763073568536;pgv_pvid=6311844914;ua_id=x6Ri8bc9LeaWnjNNAAAAADI-VXURALRxlSurJyxNNvg=;mm_lang=zh_CN;pac_uid=0_3cf43daf28071;eas_sid=11Q6v5b0x484W9i7W0Z7l7m3I8;rewardsn=;wxtokenkey=777;wwapp.vid=;wwapp.cst=;wwapp.deviceid=;uuid=fd43d0b369e634ab667a99eade075932;rand_info=CAESIHgWwDfp3W4M9F3/TGnzHp4kKkrkMiCEvN/tSNhHtNBm;slave_bizuin=3567997841;data_bizuin=3567997841;bizuin=3567997841;data_ticket=IfMEEajZ8UvywUZ1NiIv9eKZkq0cgeS0oP6tTzEwNSjwK6q+u5vLw0XYeFvLL/JA;slave_sid=aVBzSlpYOGt4eTdmbzFRWDc1OUhzR1A1UkwzdUdBaklDaGh2dWY2MUZKTEw1Um1aalZRUXg5aVBMeEJVNklCcGlVN0s5Z3VEMmRtVENHS1ZxNTBDOWRCR0p2V2FyY2daU0hxT09Remd5YmlhRWExZkMwblpweVc3SndUbnJIQk55MGhUeExJa1NJcWZ0QmJS;slave_user=gh_e0f449d4f2b6;xid=7d5dc56bb7bb526c70cfef3f6bdfa18a",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",}
proxies = {'http': '112.80.248.73'}

接下来就可以对页面进行爬取,获取页面中的文章标题与文章链接,以及文章的时间,对网页的信息进行分析发现网页的所有信息都保存在’app_msg_list’这个字段中,所以对这个字段中的数据进行提取。
发现

代码如下:

def get_weixin(fakeid):url = "https://mp.weixin.qq.com/cgi-bin/appmsg"# 使用Cookie,跳过登陆操作#headers 根据自己电脑修改headers = {"Cookie": "appmsglist_action_3567997841=card; wxuin=49763073568536; pgv_pvid=6311844914; ua_id=x6Ri8bc9LeaWnjNNAAAAADI-VXURALRxlSurJyxNNvg=; mm_lang=zh_CN; pac_uid=0_3cf43daf28071; eas_sid=11Q6v5b0x484W9i7W0Z7l7m3I8; rewardsn=; wxtokenkey=777; wwapp.vid=; wwapp.cst=; wwapp.deviceid=; uuid=fd43d0b369e634ab667a99eade075932; rand_info=CAESIHgWwDfp3W4M9F3/TGnzHp4kKkrkMiCEvN/tSNhHtNBm; slave_bizuin=3567997841; data_bizuin=3567997841; bizuin=3567997841; data_ticket=IfMEEajZ8UvywUZ1NiIv9eKZkq0cgeS0oP6tTzEwNSjwK6q+u5vLw0XYeFvLL/JA; slave_sid=aVBzSlpYOGt4eTdmbzFRWDc1OUhzR1A1UkwzdUdBaklDaGh2dWY2MUZKTEw1Um1aalZRUXg5aVBMeEJVNklCcGlVN0s5Z3VEMmRtVENHS1ZxNTBDOWRCR0p2V2FyY2daU0hxT09Remd5YmlhRWExZkMwblpweVc3SndUbnJIQk55MGhUeExJa1NJcWZ0QmJS; slave_user=gh_e0f449d4f2b6; xid=7d5dc56bb7bb526c70cfef3f6bdfa18a","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",}dda=[]for i in range(0,len(fakeid)):#配置网址data= {"token": "163455614",     #需要定期修改"lang": "zh_CN","f": "json","ajax": "1","action": "list_ex","begin": "0","count": "1","query": "","fakeid": fakeid[i],"type": "9",}dda.append(data)content_list = []proxies = {'http': '112.80.248.73'}ur=[]title=[]link=[]time1=[]content_li=[]for i in range(0,len(dda)):time.sleep(np.random.randint(90, 200))content_json = requests.get(url, headers=headers, params=dda[i],proxies=proxies,verify=False).json()print("爬取成功第"+str(i)+"个")# 返回了一个json,里面是每一页的数据for it in content_json["app_msg_list"]:  #提取信息its = []title.append(it["title"]) #标题link.append(it["link"]) #链接time1.append(it['create_time']) #时间#content_li.append(its)columns={'title':title,'link':link,'time':time1} #组成df文件df=pd.DataFrame(columns)    return df

获取到的数据包存在df中,这里的数据还不是微信公众号的最新文章数据,而是微信公众号这最近一天发出的文章数据。所以还需要对发文的时间进行筛选。注意到这里的时间格式为时间戳,所以需要对时间数据进行转换
转换代码如下:

def time_s(df):def transfer_time(s): #时间处理aa = time.ctime(s)bb = aa.split(' ')cc = (bb[-1]+"-"+bb[1]+"-"+bb[-3]).replace('Jan','1').replace('Feb','2').replace('Mar','3'). \replace('Apr','4').replace('May','5').replace('Jun','6').replace('Jul','7').replace('Aug','8') \.replace('Sep','9').replace('Oct','10').replace('Nov','11').replace('Dec','12')dd = datetime.datetime.strptime(cc,'%Y-%m-%d').date()return ddti=[]hd=[]for i in range(0,len(df['time'])):timestap= transfer_time(df['time'][i])ti.append(timestap)#print(ti)d= ti[i] + datetime.timedelta(weeks=0, days=0, hours=0, minutes=0, seconds=0, milliseconds=0, microseconds=0, )#dc = d.strftime("%Y-%m-%d")hd.append(d)df['time']=hd

这样就可以把微信公众号的时间戳数据转换为时间数据,之后,根据当前天的日期对数据集中的内容进行提取与存储就OK啦

dat=df[df['time'] == datetime.date.today() + datetime.timedelta(days= -1)] #自动获取昨天日期,将-1改为-2,则为前天的日期,以此类推##改自动化path = 'C:/Users/gpower/Desktop/work/行业信息/'   #根据自己电脑位置更改import refilename=path+"微信公众号采集" + re.sub(r'[^0-9]','',datetime.datetime.now().strftime("%Y-%m-%d")) + '.csv'# 对文件进行命名,以“微信公众号采集+当前日期”命名dat.to_csv(filename,encoding='utf_8_sig')print("保存成功")

这样就可以把需要的微信公众号最新文章采集下来了,需要多个微信公众号在fakeid中添加公众号的识别码就OK啦~

年更文章了属于是

python自动获取微信公众号最新文章相关推荐

  1. 自动获取微信公众号微信文章信息(每日自动推送)

    自动获取微信公众号微信文章信息 目录 前言 一.获取文章列表 二.自动化获取微信公众号cookie 1.影刀自动登录微信 2.获取公众号cookie 1.安装mitmproxy 2.配合切换代理脚本, ...

  2. 【Python爬虫】微信公众号历史文章和文章评论API分析

    上一篇文章爬取微信公众号文章信息准备工作介绍了微信公众号历史文章和文章评论API的组成情况,历史文章API格式:https://mp.weixin.qq.com/mp/profile_ext?acti ...

  3. 如何查看python源代码_Python源代码: 如何获取微信公众号历史记录文章

    背景# 微信公众号历史只能通过客户端(手机python抓取微信公众号,PC,Mac)查看,网络版微信不能查看公众号历史文章,否则就没有今天的文章. 具体的解释是,与公共账户历史文章相对应的URL必须由 ...

  4. 用浏览器监控采集微信公众号最新文章

    最近单位需要收集多个微信公众号的文章内容,手机上关注无法批量保存和导出文章.找了很久才发现搜狗可以搜索公众号,但每个公众号只显示一条最新的内容.于是就想到了使用软件不断循环监测采集的办法,每次出现新的 ...

  5. Python爬取微信公众号历史文章进行数据分析,发现2017年运营总结,可以这样写!...

    作者:刘晓明,互联网公司运维技术负责人,拥有10年的互联网开发和运维经验.一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能. 广告时间:最后给自己代个盐~~欢迎大家有空时翻下我牌子(知 ...

  6. 获取微信公众号历史文章列表页链接

    通用公式:https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=这里替换你的biz== Tips:红字内容为下面找到的biz值,切 ...

  7. php 获取微信文章阅读量,获取微信公众号的文章的阅读数的实践(请求参数不支持文章 ID)...

    1.新的需求为:需要实现微信渠道的文章的阅读数的显示.如图1 图1 2.实则最为理想的情况,应该是能够基于文章 ID 获取此文章的阅读数,就像抖音.查看抖音开放平台文档 – 资源中心 – Open A ...

  8. 教你如何获取微信公众号历史文章链接

    获取这个链接还是很有用的,想想当你的微信号只是个人订阅号的时候,但是你又开启了开发配置接口,这样你公众号下面的菜单就失效了,为了让用户看到你的文章,这时候这个链接就派上用场啦. 第一步 登陆你的微信公 ...

  9. python抓取微信公众号新闻文章图片

    在看公众号新闻的时候,总会有一些有用的PPT图片啥的想保存下来. 那么用python如何抓取来,简单介绍一下. 比如这个网址,https://mp.weixin.qq.com/s/-rj91sCpea ...

最新文章

  1. python编写程序-30分钟学会用Python编写简单程序
  2. Oracle 数据库DBA管理手册!
  3. Nagios 安装配置
  4. 使用docker-compose配置redis服务
  5. DSP基础算法与模型研究
  6. 使用GeoTools创建一个具有纬度,经度和半径的圆
  7. 一文弄懂二叉树三种遍历
  8. Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
  9. 童年黑科技图鉴:从 50 后到 00 后,从纸片到智能
  10. disunity的使用
  11. 万字长文 | 谷歌进入到退出中国市场的前因后果
  12. Android Studio的反编译工具使用。
  13. python识别手写文字_深度学习---手写字体识别程序分析(python)
  14. Windows 10 无法访问共享的解决办法
  15. CRM管理软件有哪些?这5款好用的CRM软件值得推荐!
  16. 计算机软件技术基础课程
  17. 【Hack The Box】linux练习-- Ophiuchi
  18. 如何在微信小程序中使用ECharts图表
  19. JAVA 酒店预订系统
  20. uni-app 使用 jsencrypt

热门文章

  1. 在Android Studio中的混淆debug与release
  2. [更新1.0:补丁绕过]CVE-2020-14882: Weblogic Console HTTP 远程代码执行漏洞通告
  3. 从键盘上输入一个数,判断是否为素数。
  4. 前端程序员发展必备工具
  5. 虚拟机windows10 屏幕大小不能自适应
  6. JAVA POI获取excel单元格红色字体,淡蓝色前景色的内容
  7. java利用UUID类生成随机数
  8. usb无线网卡和U盘同时使用
  9. 【开发工具下载汇总】
  10. js使用slice函数拆分数组