分享:Python 微信公眾號文章爬取的示例代碼
優(yōu)采云 發(fā)布時(shí)間: 2020-12-31 09:14分享:Python 微信公眾號文章爬取的示例代碼
Python微信官方帳戶(hù)文章抓取的示例代碼
更新時(shí)間:2020年11月30日08:31:45作者:少年白
此文章主要介紹了Python微信公共帳戶(hù)文章抓取的示例代碼。本文將詳細介紹示例代碼,該示例代碼對于每個(gè)人的學(xué)習或工作都具有一定的參考學(xué)習價(jià)值。有需要的朋友讓我們與編輯一起學(xué)習。
?.?·
我們通過(guò)微信公眾平臺網(wǎng)絡(luò )版圖形消息中的超鏈接獲得所需的界面
從界面中,我們可以獲得相應的微信公眾號和所有相應的微信公眾號文章。
二.界面分析
訪(fǎng)問(wèn)微信官方帳戶(hù):
參數:
action = search_biz
開(kāi)始= 0
count = 5
query =官方帳戶(hù)名
token =每個(gè)帳戶(hù)對應的令牌值
lang = zh_CN
f = json
ajax = 1
請求方法:
獲取
因此在此界面中,我們只需要獲取令牌,查詢(xún)就是您需要搜索的官方帳戶(hù),并且可以在登錄后通過(guò)Web鏈接獲取令牌。
獲取與官方帳戶(hù)對應的文章界面:
參數:
action = list_ex
開(kāi)始= 0
count = 5
fakeid = MjM5NDAwMTA2MA ==
type = 9
query =
token = 557131216
lang = zh_CN
f = json
ajax = 1
請求方法:
獲取
我們需要在該接口中獲取的值是上一步中的令牌和偽標識,并且可以在第一個(gè)接口中獲取該偽標識。這樣我們就可以獲得微信公眾號文章的數據。
三.實(shí)施
第一步:
首先,我們需要模擬通過(guò)硒的登錄,然后獲取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)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
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)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
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保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義一個(gè)登錄方法,其中的參數是登錄帳戶(hù)和密碼,然后定義一個(gè)字典來(lái)存儲cookie值。通過(guò)模擬用戶(hù),輸入相應的帳戶(hù)密碼,然后單擊“登錄”,然后將出現一個(gè)掃描驗證碼,只需使用登錄微信進(jìn)行掃描即可。
刷新當前網(wǎng)頁(yè)后,獲取當前的cookie和令牌,然后返回。
第2步:
1.請求獲得相應的官方帳戶(hù)界面,并獲取我們需要的偽造物
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': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲得的令牌和cookie,然后通過(guò)request.get請求獲取返回的微信官方帳戶(hù)的json數據
lists = search_resp.json().get('list')[0]
可以通過(guò)上面的代碼獲取相應的官方帳戶(hù)數據
fakeid = lists.get('fakeid')
可以通過(guò)上面的代碼獲得相應的偽造物
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,然后調用request.get請求接口以獲取返回的json數據。
我們已經(jīng)意識到抓取微信官方帳戶(hù)文章。
四.摘要
通過(guò)抓取微信公眾號文章,您需要掌握硒的使用和請求,以及如何獲取請求接口。但是需要注意的是,當我們循環(huán)獲得文章時(shí),必須設置延遲時(shí)間,否則帳戶(hù)將很容易被阻塞,并且無(wú)法獲得返回的數據。
這是本文文章的結尾,有關(guān)Python微信公共帳戶(hù)文章抓取的示例代碼。有關(guān)Python微信公眾號文章爬網(wǎng)內容的更多相關(guān)信息,請搜索以前的腳本文章或繼續瀏覽相關(guān)的文章,希望您將來(lái)會(huì )支持腳本屋!