微信公众号文章的接口分析及应用方法(二)
优采云 发布时间: 2021-05-26 23:12
微信公众号文章的接口分析及应用方法(二)
Python微信公共帐户文章爬行
一.想法
我们通过微信公众平台网络版图形消息中的超链接获得所需的界面
从界面中,我们可以获得相应的微信公众号和所有相应的微信公众号文章。
二.界面分析
访问微信公众号:
参数:
action = search_biz
开始= 0
count = 5
query =官方帐户名
token =每个帐户对应的令牌值
lang = zh_CN
f = json
ajax = 1
请求方法:
获取
因此在此界面中,我们只需要获取令牌,并且查询是您需要搜索的官方帐户,并且可以在登录后通过Web链接获取令牌。
获取与官方帐户对应的文章界面:
参数:
action = list_ex
开始= 0
count = 5
fakeid = MjM5NDAwMTA2MA ==
type = 9
query =
token = 557131216
lang = zh_CN
f = json
ajax = 1
请求方法:
获取
我们需要在该接口中获取的值是上一步中的令牌和伪标识,并且可以在第一个接口中获取该伪标识。这样我们就可以获得微信公众号文章的数据。
三.要实现的第一步:
首先我们需要模拟通过硒的登录,然后获取cookie和相应的令牌
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 点击切换到账号密码输入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模拟用户点击
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 点击登录
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登录验证
print('请扫描二维码')
sleep(20)
# 刷新当前网页
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 获取当前网页链接
url = browser.current_url
# 获取当前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 转换为字符串
cookie_str = json.dumps(post)
# 存储到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 对当前网页链接进行切片,获取到token
paramList = url.strip().split('?')[1].split('&')
# 定义一个字典存储数据
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定义一个登录方法,其中的参数是登录帐户和密码,然后定义一个字典来存储cookie的值。通过模拟用户,输入相应的帐户密码,然后单击“登录”,然后将出现扫描代码验证,只需使用登录微信扫描代码即可。
刷新当前网页后,获取当前的cookie和令牌,然后返回。
第2步:1.请求相应的官方帐户界面,并获取我们需要的伪造物
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公众号名称',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
传入我们获得的令牌和cookie,然后通过request.get请求获取返回的微信官方帐户的json数据
lists = search_resp.json().get('list')[0]
可以通过上面的代码获取相应的官方账户数据
fakeid = lists.get('fakeid')
可以通过上面的代码获得相应的伪造物
2.请求获取微信公众号文章界面,并获取我们需要的文章数据
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我们传入了fakeid和token,然后调用requests.get请求接口以获取返回的json数据。
我们已经实现了对微信官方帐户文章的抓取。
四.摘要
通过抓取微信公众号文章,您需要掌握硒和请求的用法,以及如何获取请求接口。但是需要注意的是,当我们循环获得文章时,必须设置一个延迟时间,否则该帐户将很容易被阻塞,并且将无法获得返回的数据。