这个需要有微信公众号,个人订阅号也是可以的
微信公众号地址:https://mp.weixin.qq.com/
首先,抓取的是公众号的内容,我也就找了一个直接分享图片的公众号:每日60s简报(dailybriefing60s),也是很稳定的每天都会在0点左右就会推送当天简报
先登陆你的公众号,因为我们要获取一些你的cookie以及token
登陆后F12查看请求
红框除就是cookie以及token,只需要粘贴在python文件里面对应的位置就行
import os
import requests
import json
from bs4 import BeautifulSoup
Cookie = 'cookie' # 你的cookie
url = "https://mp.weixin.qq.com/cgi-bin/appmsg"
headers = {
"Cookie": Cookie,
"User-Agent": 'Mozilla/5.0 (Linux; Android 10; YAL-AL00 Build/HUAWEIYAL-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 HuaweiBrowser/10.0.1.335 Mobile Safari/537.36'
}
ID = '每日60s简报' #公众号的名字
token = 'token' #你的token
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&begin=0&count=5&query={}&token={}&lang=zh_CN&f=json&ajax=1'.format(ID,token)
doc = requests.get(search_url,headers=headers).text
jstext = json.loads(doc)
fakeid = jstext['list'][0]['fakeid']
data = {
"token": token,
"lang": "zh_CN",
"f": "json",
"ajax": "1",
"action": "list_ex",
"begin": 0,
"count": "5",
"query": "",
"fakeid": fakeid,
"type": "9",
}
json_test = requests.get(url, headers=headers, params=data).text
json_test = json.loads(json_test) # 获取到公众号最新的10篇文章
page = json_test["app_msg_list"]
page = page[0]['link'] # 分析json ,他的文章链接再link里面
html = requests.get(page)
text_obj = BeautifulSoup(html.text,'lxml')
imgurl = text_obj.find('div',class_='share_media').find('img').get('src') # 分析文章的源代码,知道文章的内容图片是在 <div id="img_list" class="share_media">的img标签下
r = requests.get(imgurl)
path = os.path.split(os.path.realpath(__file__))[0] # 获取当前文件的路径
with open(path+'/'+'news.jpg','wb') as f:
f.write(r.content) # 将文件保存在当前路径并命名为news.jpg
源文件下载地址:http://pan.03c3.cn/public/blog
不是很懂python,代码写得烂,还请见谅
PS:目前cookie和token有访问限制频率,应该是达到多少次之后会被封禁,目前还不知道第二天会不会解除
3 条评论
转发自己公众号吗?
不错,支持!