微信公众号文章的接口分析及应用方法(二)

优采云 发布时间: 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数据。

  我们已经实现了对微信官方帐户文章的抓取。

  四.摘要

  通过抓取微信公众号文章,您需要掌握硒和请求的用法,以及如何获取请求接口。但是需要注意的是,当我们循环获得文章时,必须设置一个延迟时间,否则该帐户将很容易被阻塞,并且将无法获得返回的数据。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线