querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
優(yōu)采云 發(fā)布時(shí)間: 2021-09-22 03:05querylist采集微信公眾號文章(Q&;A():.find_element_by_xpath)
一.ideas
我們通過(guò)網(wǎng)頁(yè)上微信公共平臺的圖形信息中的超鏈接獲得我們需要的界面圖形信息
超鏈接
從界面可以得到相應的微信公眾號和相應的微信公眾號文章. p>
二.界面分析
獲取微信公眾號界面:
參數:
動(dòng)作=搜索業(yè)務(wù)
開(kāi)始=0
計數=5
query=正式帳戶(hù)名
令牌=對應于每個(gè)帳戶(hù)的令牌值
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
所以這個(gè)界面只需要token,查詢(xún)的是您需要搜索的官方賬號,登錄后可以通過(guò)網(wǎng)頁(yè)獲取token。p>
微信公眾號
獲取官方賬號對應的文章接口:
參數:
動(dòng)作=列表uux
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
質(zhì)疑=
令牌=557131216
lang=zh\ucn
f=json
ajax=1
請求方法:
得到
在這個(gè)接口中,我們需要獲得上一步的令牌和fakeid,這個(gè)fakeid可以在第一個(gè)接口中獲得。所以我們可以得到微信公眾號的數據文章. p>
微信公眾號
三.實(shí)現
步驟1:
首先,我們需要通過(guò)selenium模擬登錄,然后獲得cookie和相應的令牌
def微信登錄(用戶(hù)、密碼):
post={}
browser=webdriver.Chrome()
browser.get('#39;)
睡眠(3)
browser.delete_all_cookies()
睡眠(2)
#單擊以切換到帳戶(hù)密碼輸入
瀏覽器。通過(guò)xpath(//a[@class='login\uuuuuu type\uuuu container\uuuu select-type'])查找元素。單擊()
睡眠(2)
#模擬用戶(hù)點(diǎn)擊
input\u user=browser。通過(guò)xpath(//input[@name='account'])查找元素
輸入用戶(hù)。發(fā)送密鑰(用戶(hù))
input_password=browser。通過(guò)xpath(//input[@name='password'])查找_元素
輸入密碼。發(fā)送密鑰(密碼)
睡眠(2)
#單擊登錄
瀏覽器。通過(guò)xpath(//a[@class='btn\u login'])查找元素。單擊()
睡眠(2)
#微信登錄驗證
打?。?請掃描二維碼')
睡眠(20)
#刷新當前頁(yè)面
browser.get('#39;)
睡眠(5)
#獲取指向當前網(wǎng)頁(yè)的鏈接
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、 寫(xiě)入(cookie_str)
打?。?成功在本地保存cookie')
#切片當前網(wǎng)頁(yè)鏈接并獲取令牌
paramList=url.strip().split(“?”)[1]。split(“&;”)
#定義一個(gè)字典來(lái)存儲數據
paramdict={}
對于列表中的項目:
參數[item.split('=')[0]]=item.split('=')[1]
#返回令牌
返回參數['token']
定義登錄方式,參數為登錄賬號和密碼,然后定義字典存儲cookie值,模擬用戶(hù)輸入相應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃描代碼
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和令牌,然后返回
步驟2:
1.請求獲取相應的官方賬戶(hù)界面并獲取偽造ID
我們需要
url='#39
標題={
“主持人”:“
“用戶(hù)代理”:“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
參數={
“操作”:“搜索業(yè)務(wù)”
“開(kāi)始”:“0”
“計數”:“5”
“查詢(xún)”:搜索正式帳戶(hù)名
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
search_resp=requests.get(url=search_url,cookies=cookies,headers=headers,params=params)
引入我們獲得的令牌和cookie,然后返回JSON數據
通過(guò)requests.get request獲取微信公眾號
lists=search_resp.json().get('list')[0]
一,
,通過(guò)上面的代碼,您可以得到相應的官方賬戶(hù)數據
fakeid=lists.get('fakeid')
一,
通過(guò)上述代碼可以獲得相應的偽造ID
2.請求獲取微信官方賬號文章接口,獲取文章數據
我們需要
appmsg_url='#39
參數u數據={
“操作”:“列表”
“開(kāi)始”:“0”
“計數”:“5”
"假":假,
“類(lèi)型”:“9”
“查詢(xún)”:“
“令牌”:令牌
"郎":"zh_CN",
‘f’:‘json’
“ajax”:“1”
}
appmsg_resp=requests.get(url=appmsg_url,cookies=cookies,headers=headers,params=params_data)
我們傳入fakeid和token,然后調用requests.get請求接口來(lái)獲取返回的JSON數據
我們已經(jīng)實(shí)現了微信公眾號的爬網(wǎng)文章.
四.summary
通過(guò)微信官方賬號文章爬行,需要掌握selenium的用法和請求,以及如何獲取請求界面。但需要注意的是,當我們循環(huán)獲取文章時(shí),必須設置延遲時(shí)間,否則賬號很容易被阻塞,無(wú)法獲取返回的數據