querylist采集微信公众号文章(Q&;A():.find_element_by_xpath)
优采云 发布时间: 2021-09-22 03:05querylist采集微信公众号文章(Q&;A():.find_element_by_xpath)
一.ideas
我们通过网页上微信公共平台的图形信息中的超链接获得我们需要的界面图形信息
超链接
从界面可以得到相应的微信公众号和相应的微信公众号文章. p>
二.界面分析
获取微信公众号界面:
参数:
动作=搜索业务
开始=0
计数=5
query=正式帐户名
令牌=对应于每个帐户的令牌值
lang=zh\ucn
f=json
ajax=1
请求方法:
得到
所以这个界面只需要token,查询的是您需要搜索的官方账号,登录后可以通过网页获取token。p>
微信公众号
获取官方账号对应的文章接口:
参数:
动作=列表uux
开始=0
计数=5
fakeid=MjM5NDAwMTA2MA==
类型=9
质疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
请求方法:
得到
在这个接口中,我们需要获得上一步的令牌和fakeid,这个fakeid可以在第一个接口中获得。所以我们可以得到微信公众号的数据文章. p>
微信公众号
三.实现
步骤1:
首先,我们需要通过selenium模拟登录,然后获得cookie和相应的令牌
def微信登录(用户、密码):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#单击以切换到帐户密码输入
浏览器。通过xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。单击()
睡眠(2)
#模拟用户点击
input\u user=browser。通过xpath(//input[@name='account'])查找元素
输入用户。发送密钥(用户)
input_password=browser。通过xpath(//input[@name='password'])查找_元素
输入密码。发送密钥(密码)
睡眠(2)
#单击登录
浏览器。通过xpath(//a[@class='btn\u login'])查找元素。单击()
睡眠(2)
#微信登录验证
打印('请扫描二维码')
睡眠(20)
#刷新当前页面
browser.get('#39;)
睡眠(5)
#获取指向当前网页的链接
url=browser.current\u url
#获取当前cookie
cookies=浏览器。获取cookies()
对于Cookie中的项目:
post[项目['name']]=项目['value']
#转换为字符串
cookie_str=json.dumps(post)
#本地存储
将open('cookie.txt','w+',encoding='utf-8')作为f:
f、 写入(cookie_str)
打印('成功在本地保存cookie')
#切片当前网页链接并获取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定义一个字典来存储数据
paramdict={}
对于列表中的项目:
参数[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回参数['token']
定义登录方式,参数为登录账号和密码,然后定义字典存储cookie值,模拟用户输入相应账号密码,点击登录,出现扫码验证,登录微信即可扫描代码
刷新当前网页后,获取当前cookie和令牌,然后返回
步骤2:
1.请求获取相应的官方账户界面并获取伪造ID
我们需要
url='#39
标题={
“主持人”:“
“用户代理”:“Mozilla/5.0(Windows NT10.0;Win64;x64)AppleWebKit/537.36(KHTML,像壁虎)铬/86.0.424 0.183狩猎/537.36 Edg/86.0.62 2.63"
}
将open('cookie.txt','r',encoding='utf-8')作为f:
cookie=f.read()
cookies=json.loads(cookie)
resp=requests.get(url=url,headers=headers,cookies=cookies)
搜索url='#39
参数={
“操作”:“搜索业务”
“开始”:“0”
“计数”:“5”
“查询”:搜索正式帐户名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我们获得的令牌和cookie,然后返回JSON数据
通过requests.get request获取微信公众号
lists=search_resp.json().get('list')[0]
一,
,通过上面的代码,您可以得到相应的官方账户数据
fakeid=lists.get('fakeid')
一,
通过上述代码可以获得相应的伪造ID
2.请求获取微信官方账号文章接口,获取文章数据
我们需要
appmsg_url='#39
参数u数据={
“操作”:“列表”
“开始”:“0”
“计数”:“5”
"假":假,
“类型”:“9”
“查询”:“
“令牌”:令牌
"郎":"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数据
我们已经实现了微信公众号的爬网文章.
四.summary
通过微信官方账号文章爬行,需要掌握selenium的用法和请求,以及如何获取请求界面。但需要注意的是,当我们循环获取文章时,必须设置延迟时间,否则账号很容易被阻塞,无法获取返回的数据