免费获取:python自动获取微信公众号最新文章(python自动获取微信公众号最新文章)
优采云 发布时间: 2022-12-02 02:47免费获取:python自动获取微信公众号最新文章(python自动获取微信公众号最新文章)
微信公众号获取思路
微信公众号文章获取常用方法有搜狐、微信公众号首页获取、API接口等。
听说搜狐最近不太好用,之前用的API接口也经常维护,所以就用微信公众平台来爬取数据。
首先登录自己的微信公众平台。如果您没有帐户,可以注册一个。进去后找“图文信息”,就是写公众号的地方
点进去后是写公众号文章的界面。在界面中,找到“超链接”栏,您可以在这里搜索其他公众号。
以“python”为例,输入要检索的公众号名称,在显示的公众号中选择要采集的公众号
点击浏览器查看,在网络中找到下图链接,右边的Request URL才是真实存储公众号数据的链接。说明这是一个json网页。
集合实例
以公众号“python”的链接为例,对URL进行分析。
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
然后下一步就是对URL的请求
首先导入需要的库
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 InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
由于不想重复登录公众号平台,可以使用cookies避免登录。求文章前,需要找到网页的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",
<p>
" />
"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'}
</p>
接下来可以爬取页面,获取页面中的文章标题和文章链接,以及文章的时间,分析网页的信息,发现该网页的所有信息都存储在'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,里面是每一页的数据
<p>
" />
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
</p>
得到的数据包存放在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 dd
ti=[]
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
这样就可以将微信公众号的时间戳数据转换成时间数据。之后就可以按照当天的日期提取数据集中的内容存储了。
dat=df[df['time'] == datetime.date.today() + datetime.timedelta(days= -1)] #自动获取昨天日期,将-1改为-2,则为前天的日期,以此类推
##改自动化
path = 'C:/Users/gpower/Desktop/work/行业信息/' #根据自己电脑位置更改
import re
filename=path+"微信公众号采集" + re.sub(r'[^0-9]','',datetime.datetime.now().strftime("%Y-%m-%d")) + '.csv'
# 对文件进行命名,以“微信公众号采集+当前日期”命名
dat.to_csv(filename,encoding='utf_8_sig')
print("保存成功")
这样就可以采集
到所需微信公众号的最新文章。如果需要多个微信公众号,将公众号的识别码添加到fakeid即可~
新品属于是
最新版本:文章自动采集插件
文章自动采集插件可以从网站爬虫入手。pythonscrapy爬虫,wordpress模拟登录工具,javascript验证爬虫工具 最后,如果你真的想玩网站爬虫,就到这一步了。其中使用javascript验证爬虫工具需要在需要验证的网站上配置web环境,安装库,使用浏览器验证来爬取返回的javascript。
javascript 验证插件是如何做到的?其实配置爬虫的人已经配置好了,你当然很难去验证。比如题主自然不会傻傻的去配置环境。其实你可以用同样的方法将javascript认证插件应用到你的目标网站,就像登录wordpress一样。
找几本关于网络爬虫的书
" />
推荐看看laravel的源码,做个网站。
Laravel5不会写,那就不要写wordpress了,先完成功能再写,前后端分离。
随便去某宝搜一下cpvv,关键字laravel和wordpress,就会有一堆教程,看一看。
" />
wordpress入门教程/资料一大堆,一键安装,无需搭建wordpress。
这个很简单,写一个爬虫,使用有财云、马克鳗、犀牛云(电子书)等工具。具体的安装过程网上可以查到,然后用selenium。其实我也推荐用selenium+python3写的,可以自己写一个自动化的,万一这个网站需要你去采集数据,
优采云
采集器是一款网站采集器,根据用户提供的关键词自动采集云端相关文章发布到用户网站。可以自动识别各种网页的标题、正文等信息,无需用户编写任何采集规则,即可进行全网采集。采集
内容后,会自动计算内容与集合关键词的关联度,只向用户推送相关文章。支持标题前缀、关键词自动加粗、固定链接插入、自动提取Tags、自动内链、自动图片匹配、自动伪原创、内容过滤和替换、电话号码和URL清洗、定时采集、百度首创提交等一系列SEO功能。用户只需设置关键词及相关要求,即可实现全托管、零维护网站内容更新。网站数量没有限制,无论是单个网站还是大量的站群,都可以非常方便的进行管理。