爬蟲學習日誌3 ajax json 和 post請求
阿新 • • 發佈:2021-08-08
1 題目要求
破解百度翻譯
2 要求分析
首先題目的要求只需要我們獲取翻譯之後的內容,而不需要其他無關的內容。而Ajax請求可以解決這個問題,(Ajax 在瀏覽器與 Web 伺服器之間使用非同步資料傳輸(HTTP 請求),這樣就可使網頁從伺服器請求少量的資訊,而不是整個頁面。 Ajax可使因特網應用程式更小、更快,更友好。 Ajax 是一種獨立於 Web 伺服器軟體的瀏覽器技術。)接下來就來分佈介紹如何獲取所需的資訊。
3 獲取url
url是爬蟲爬取資料的基礎,在本題中獲取url的操作是 在瀏覽器中右鍵點選檢查,再點選網路,選擇XHR,在輸入需要翻譯的資料時會出現多個sug資料包,單擊sug
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偽裝