1. 程式人生 > 其它 >爬蟲學習日誌3 ajax json 和 post請求

爬蟲學習日誌3 ajax json 和 post請求

1 題目要求

破解百度翻譯

2 要求分析

首先題目的要求只需要我們獲取翻譯之後的內容,而不需要其他無關的內容。而Ajax請求可以解決這個問題,(Ajax 在瀏覽器與 Web 伺服器之間使用非同步資料傳輸(HTTP 請求),這樣就可使網頁從伺服器請求少量的資訊,而不是整個頁面。 Ajax可使因特網應用程式更小、更快,更友好。 Ajax 是一種獨立於 Web 伺服器軟體的瀏覽器技術。)接下來就來分佈介紹如何獲取所需的資訊。

3 獲取url

url是爬蟲爬取資料的基礎,在本題中獲取url的操作是 在瀏覽器中右鍵點選檢查,再點選網路,選擇XHR,在輸入需要翻譯的資料時會出現多個sug資料包,單擊sug

資料包找到kw為檢索詞的,複製其請求url即可。

4 程式碼實現

import requests
import json
post_url = 'https://fanyi.baidu.com/sug'
#指定url
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62'
}
#UA偽裝
keyword = input('input (a) word(s):')
data = {
    'kw':keyword
}
response = requests.post(url=post_url,data=data,headers=headers)
#data引數與get的params類似
#發起請求
page_json = response.json()
#僅在相應資料為json時,才能夠使用response.json
#獲取響應資料
FileName = keyword + '.json'
fp = open(FileName,'w',encoding='utf-8')
json.dump(page_json,fp=fp,ensure_ascii=False)
#因為中文是不支援ascii編碼的,所以需要將第三個引數設定為False
#持久化儲存
print('Accomplished!')

在程式碼實現時,我們還是需要進行UA偽裝