爬取逻辑
- 使用selenium自动化工具,获取微信公众号平台的cookies以及加密token
- 把cookie与token用在requests函数中模拟浏览器访问微信公众号服务中的素材管理
- 在素材管理中搜索,公众号名称与文章,获取文章地址与保存
使用selenium获取token
1、需要扫码登录,获取token,与 登录状态的cookie,使用get_cookies()方法或页面cookies
2、通过xpath匹配出一个url,re匹配出token
3、
下面是代码的实现
#遵循PEP8规则
import time
import json
import re
from selenium import webdriver
from lxml import html
# 获取cookies和token
class C_ookie:
# 初始化
def __init__(self):
self.html = ''
# 获取cookie
def get_cookie(self):
url = 'https://mp.weixin.qq.com'
Browner = webdriver.Chrome()
Browner.get(url)
# 获取账号输入框
ID = Browner.find_element_by_name('account')
# 获取密码输入框
PW = Browner.find_element_by_name('password')
# 输入账号
id = ''
pw = ''
# id = input('请输入账号:')
# pw = input('请输入密码:')
ID.send_keys(id)
PW.send_keys(pw)
# 获取登录button,点击登录
Browner.find_element_by_class_name('btn_login').click()
# 等待扫二维码
time.sleep(10)
ck = Browner.get_cookies()
ck1 = json.dumps(ck)
with open('ck.txt','w') as f :
f.write(ck1)
f.close()
self.html = Browner.page_source
# 获取token,在页面中提取
def Token(self):
etree = html.etree
h = etree.HTML(self.html)
url = h.xpath('//a[@title="首页"]/@href')[0]
print(url)
token = re.findall('\d+',url)
print(token)
with open('token.txt', 'w') as f:
f.write(token)
f.close()
C = C_ookie()
C.get_cookie()
C.Token()
最主要的秘钥已经解决了,剩下的就是模范浏览器访问后端的,期间不要过猛,否则容易被发现,被腾讯封个几小时
接下来准备爬取微信公众号里面的资源url了,可以先自己爬取一下,下一篇博客咱们一起来获取