【魔獸世界】谷歌微信公眾號文章接口獲取方法
優(yōu)采云 發(fā)布時(shí)間: 2021-06-11 00:05【魔獸世界】谷歌微信公眾號文章接口獲取方法
一、網(wǎng)上方法:
1.使用訂閱賬號功能中的查詢(xún)鏈接,(此鏈接現在采取了嚴重的反抄襲措施,訂閱賬號在抓取幾十個(gè)頁(yè)面時(shí)會(huì )被屏蔽,僅供參考)
詳情請訪(fǎng)問(wèn)此鏈接:/4652.html
2.微信搜索使用搜狗搜索(此方法只能查看每個(gè)微信公眾號文章的前10條)
詳情請訪(fǎng)問(wèn)此鏈接:/qiqiyingse/article/details/70050113
3.先搶公眾號界面,訪(fǎng)問(wèn)界面獲取所有文章連接
二、環(huán)境配置及材料準備
1.需要安裝python selenium模塊包,使用selenium中的webdriver驅動(dòng)瀏覽器獲取cookie,達到登錄效果;
2.使用webdriver功能需要安裝瀏覽器對應的驅動(dòng)插件。我在這里測試的是 Google Chrome。
3.微信公眾號申請(個(gè)人訂閱號申請門(mén)檻低,服務(wù)號需要營(yíng)業(yè)執照等)
4、.微信公眾號文章界面地址可在微信公眾號后臺新建圖文消息,可通過(guò)超鏈接功能獲??;
通過(guò)搜索關(guān)鍵字獲取所有相關(guān)公眾號信息,但我只取第一個(gè)進(jìn)行測試,其他感興趣的人也可以全部獲取
5.獲取要爬取的公眾號的fakeid
6.選擇要爬取的公眾號,獲取文章接口地址
從 selenium 導入 webdriver
導入時(shí)間
導入json
導入請求
重新導入
隨機導入
user=""
password="weikuan3344520"
gzlist=['熊貓']
#登錄微信公眾號,登錄后獲取cookie信息,保存在本地文本
def weChat_login():
#定義一個(gè)空字典來(lái)存儲cookies的內容
post={}
#使用網(wǎng)絡(luò )驅動(dòng)程序啟動(dòng)谷歌瀏覽器
print("啟動(dòng)瀏覽器,打開(kāi)微信公眾號登錄界面")
driver = webdriver.Chrome(executable_path='C:\chromedriver.exe')
#打開(kāi)微信公眾號登錄頁(yè)面
driver.get('/')
#等待 5 秒
time.sleep(5)
print("輸入微信公眾號賬號和密碼...")
#清除帳號框中的內容
driver.find_element_by_xpath("./*//input[@name='account'][@type='text']").clear()
#自動(dòng)填寫(xiě)登錄用戶(hù)名
driver.find_element_by_xpath("./*//input[@name='account'][@type='text']").send_keys(user)
#清空密碼框內容
driver.find_element_by_xpath("./*//input[@name='password'][@type='password']").clear()
#自動(dòng)填寫(xiě)登錄密碼
driver.find_element_by_xpath("./*//input[@name='password'][@type='password']").send_keys(password)
//這是重點(diǎn),最近改版后
#自動(dòng)輸入密碼后,需要手動(dòng)點(diǎn)擊記住我
print("請點(diǎn)擊登錄界面:記住您的賬號")
time.sleep(10)
#自動(dòng)點(diǎn)擊登錄按鈕登錄
driver.find_element_by_xpath("./*//a[@class='btn_login']").click()
#用手機掃描二維碼!
print("請用手機掃描二維碼登錄公眾號")
time.sleep(20)
print("登錄成功")
#重新加載公眾號登錄頁(yè)面,登錄后會(huì )顯示公眾號后臺首頁(yè),從返回的內容中獲取cookies信息
driver.get('/')
#獲取cookies
cookie_items = driver.get_cookies()
#獲取的cookies為列表形式,將cookies轉換為json形式存放在名為cookie的本地文本中
對于 cookie_items 中的 cookie_item:
post[cookie_item['name']] = cookie_item['value']
cookie_str = json.dumps(post)
with open('cookie.txt','w+', encoding='utf-8') as f:
f.write(cookie_str)
print("Cookies 信息已保存在本地")
#抓取微信公眾號文章并存入本地文本
def get_content(query):
#query 是要抓取的公眾號名稱(chēng)
#公眾號首頁(yè)
url =''
#設置標題
標題 = {
"主機":"",
"用戶(hù)代理": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"
}
#讀取上一步獲取的cookie
with open('cookie.txt','r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
#登錄后微信公眾號首頁(yè)url改為:/cgi-bin/home?t=home/index&lang=zh_CN&token=1849751598,獲取token信息
response = requests.get(url=url, cookies=cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
#搜索微信公眾號接口地址
search_url ='/cgi-bin/searchbiz?'
#搜索微信公眾號接口需要傳入的參數,共有三個(gè)變量:微信公眾號token、隨機數random、搜索微信公眾號名稱(chēng)
query_id = {
'action':'search_biz',
'token':令牌,
'lang':'zh_CN',
'f':'json',
'ajax': '1',
'random': random.random(),
'查詢(xún)':查詢(xún),
'開(kāi)始':'0',
'計數':'5'
}
#打開(kāi)搜索微信公眾號接口地址,需要傳入cookies、params、headers等相關(guān)參數信息
search_response = requests.get(search_url, cookies=cookies, headers=header, params=query_id)
#取搜索結果第一個(gè)公眾號
lists = search_response.json().get('list')[0]
#獲取這個(gè)公眾號的fakeid,以后爬取公眾號文章需要這個(gè)字段
fakeid = list.get('fakeid')
#微信公眾號文章界面地址
appmsg_url ='/cgi-bin/appmsg?'
#搜索文章需要傳入幾個(gè)參數:登錄的公眾號token、爬取文章的fakeid公眾號、隨機數random
query_id_data = {
'token':令牌,
'lang':'zh_CN',
'f':'json',
'ajax': '1',
'random': random.random(),
'action':'list_ex',
'begin': '0',#不同的頁(yè)面,這個(gè)參數改變,改變規則是每頁(yè)加5
'計數':'5',
'查詢(xún)':'',
'fakeid':fakeid,
'類(lèi)型':'9'
}
#打開(kāi)搜索到的微信公眾號文章list頁(yè)面
appmsg_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data)
#Get 文章total number
max_num = appmsg_response.json().get('app_msg_cnt')
#每頁(yè)至少有5個(gè)條目,獲取文章頁(yè)總數,爬取時(shí)需要頁(yè)面爬取
num = int(int(max_num) / 5)
#起始頁(yè)begin參數,后續每頁(yè)加5
開(kāi)始 = 0
當 num + 1> 0 :
query_id_data = {
'token':令牌,
'lang':'zh_CN',
'f':'json',
'ajax': '1',
'random': random.random(),
'action':'list_ex',
'begin':'{}'.format(str(begin)),
'計數':'5',
'查詢(xún)':'',
'fakeid':fakeid,
'類(lèi)型':'9'
}
print('翻頁(yè):--------------',begin)
#獲取文章每個(gè)頁(yè)面的標題和鏈接地址,寫(xiě)入本地文本
query_fakeid_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data)
fakeid_list = query_fakeid_response.json().get('app_msg_list')
對于 fakeid_list 中的項目:
content_link=item.get('link')
content_title=item.get('title')
fileName=query+'.txt'
with open(fileName,'a',encoding='utf-8') as fh:
fh.write(content_title+":\n"+content_link+"\n")
數量 -= 1
begin = int(begin)
開(kāi)始+=5
time.sleep(2)
如果 __name__=='__main__':
試試:
#登錄微信公眾號,登錄后獲取cookie信息,保存在本地文本
weChat_login()
#登錄后使用微信公眾號文章interface爬取文章
在 gzlist 中查詢(xún):
#抓取微信公眾號文章并存入本地文本