爬取必應翻譯
踩點
很簡約的一個網站,老樣子,我們首先按F12,進入network,篩選xhr
我們蹲到了一個post請求 https://cn.bing.com/ttranslatev3?isVertical=1&&IG=25FEE7A7C7C14533BBFD66AC5125C49E&IID=translator.5025.1
看一下引數
- 震驚!居然沒有會變的引數。
程式碼
- 同樣的我們先去找一下請求頭
import requests
import re
headers = {
'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',
'referer': 'https://cn.bing.com/translator/',
'origin': 'https://cn.bing.com',
'cookie': 'MUID=096F420F0C72689723B74D660D0869AB; MUIDB=096F420F0C72689723B74D660D0869AB; _EDGE_V=1; SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=4AA515596EB74801BC2212A2B99B705B&dmnchg=1; _SS=SID=118F574600DF62242683583D01F163BB; _TTSS_OUT=hist=WyJhZiIsImVuIl0=; _tarLang=default=en; btstkn=Ri2Gozn6GnnrscD5AGT0ykm4grRxenOXfloAsZnH9PucxJzHT%252Fwai5ui8TOq0QIK; _TTSS_IN=hist=WyJlbiIsImFmIiwiemgtSGFucyIsImF1dG8tZGV0ZWN0Il0=; SNRHOP=I=&TS=; SRCHUSR=DOB=20201106&T=1604735730000; _EDGE_S=F=1&SID=0F0E55C7A96F6A3314845ABCA82C6B51; SRCHHPGUSR=HV=1604735900&WTS=63740332530',
}
url = 'https://cn.bing.com/ttranslatev3?isVertical=1&&IG=25FEE7A7C7C14533BBFD66AC5125C49E&IID=translator.5025.1'
trans = input("請輸入待翻譯文字:")
data = {
'fromLang': 'auto-detect',
'text': '%s'%trans,
'to': 'en'
}
res = requests.post(url,headers=headers,data=data)
print(res.text)
- 執行結果:
- 使用正則提取結果:
result = re.search('"text":"(.*?)"',res.text).group(1)
print(result)
- 新增一個迴圈:
while 1:
trans = input("請輸入待翻譯文字:")
if trans == '-1':
break
data = {
'fromLang': 'auto-detect',
'text': '%s'%trans,
'to': 'en'
}
res = requests.post(url,headers=headers,data=data)
result = re.search('"text":"(.*?)"',res.text).group(1)
print(result)
- 再次執行:
- 非常棒
一點小探索
https://cn.bing.com/ttranslatev3?isVertical=1&&IG=25FEE7A7C7C14533BBFD66AC5125C49E&IID=translator.5025.1
- 注意到這個請求url後面的引數,疑似加密的
- 我們換一個翻譯文字
- 發現請求url變成了:
https://cn.bing.com/ttranslatev3?isVertical=1&&IG=25FEE7A7C7C14533BBFD66AC5125C49E&IID=translator.5025.3
- 再換一個試試
- 放一起比較一下:
- 發現第一次的IID是5025.1,第二次翻譯變成了5025.3,第三次變成了5025.5,可以看出來這個引數是一個計數器,每次翻譯加2
- 而這三次,前面的IG引數都沒有發生變化,我們重新整理網頁試試
- 發現IG引數變了,IID引數重置了!
- 我們再次對比一下:
- 看來每次重新整理後IG引數會改變,而IID引數重置,只有重新整理後才會改變,那麼我們推測 IG 引數在網頁載入的時候,就唯一確定了。
- 我們過去搜一下
- 果然!!重新整理一下試試
- 發現這個 IG 引數又發生了變化,這也證明了猜測
更好的程式碼
- 對上面的小探索進行總結,寫出一份更好的程式碼
import requests
import re
# 每次請求 url 的時候,獲取一下 IG 引數
# 整個請求,IG引數不會再發生變化
def getIG():
header = {'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'}
response = requests.get('https://cn.bing.com/translator/',headers=header)
ig = re.search(',IG:"(.*?)",',response.text)
return ig.group(1)
headers = {
'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',
'referer': 'https://cn.bing.com/translator/',
'origin': 'https://cn.bing.com',
'cookie': 'MUID=096F420F0C72689723B74D660D0869AB; MUIDB=096F420F0C72689723B74D660D0869AB; _EDGE_V=1; SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=4AA515596EB74801BC2212A2B99B705B&dmnchg=1; _SS=SID=118F574600DF62242683583D01F163BB; _TTSS_OUT=hist=WyJhZiIsImVuIl0=; _tarLang=default=en; btstkn=Ri2Gozn6GnnrscD5AGT0ykm4grRxenOXfloAsZnH9PucxJzHT%252Fwai5ui8TOq0QIK; _TTSS_IN=hist=WyJlbiIsImFmIiwiemgtSGFucyIsImF1dG8tZGV0ZWN0Il0=; SNRHOP=I=&TS=; SRCHUSR=DOB=20201106&T=1604735730000; _EDGE_S=F=1&SID=0F0E55C7A96F6A3314845ABCA82C6B51; SRCHHPGUSR=HV=1604735900&WTS=63740332530',
}
ig = getIG()
# 新增一下計數器,及IID的計數
count = 1
while 1:
trans = input("請輸入待翻譯文字:")
if trans == '-1':
break
data = {
'fromLang': 'auto-detect',
'text': '%s'%trans,
'to': 'en'
}
# 每次獲取翻譯內容,IG引數不變,IID引數每次查詢後加2
url = 'https://cn.bing.com/ttranslatev3?isVertical=1&&IG=%s&IID=translator.5025.%d'%(ig,count)
res = requests.post(url,headers=headers,data=data)
result = re.search('"text":"(.*?)"',res.text).group(1)
print(result)
count = count + 2
- 執行效果
相關文章
- 爬取有道翻譯
- 利用Python爬取必應桌布Python
- python學習值爬取百度翻譯Python
- Python《必應bing桌面圖片爬取》Python
- 爬蟲—有道翻譯案例分析爬蟲
- 有道雲詞典--翻譯/螢幕取詞翻譯
- python入門-爬取百度翻譯中的雙語例句Python
- python爬蟲呼叫谷歌翻譯介面Python爬蟲谷歌
- 一篇文章教會你利用Python網路爬蟲獲取有道翻譯手機版的翻譯介面Python爬蟲
- 爬蟲呼叫百度翻譯API爬蟲API
- python3:爬有道翻譯(命令列版)Python命令列
- 爬蟲百戰穿山甲(2):百度翻譯爬蟲爬蟲
- Java爬蟲 爬取bing必應每日一圖背景圖下載到本地(HttpClient+Jsoup+Jackson)Java爬蟲HTTPclientJS
- Mac使用者必備翻譯軟體!Bob 0.5.3 中文版 附谷歌翻譯外掛!Mac谷歌
- Python爬蟲教程-05-python爬蟲實現百度翻譯Python爬蟲
- Python爬蟲教程-06-爬蟲實現百度翻譯(requests)Python爬蟲
- aardio爬蟲) 實戰篇:逆向有道翻譯web介面爬蟲Web
- python 爬蟲 簡單實現百度翻譯Python爬蟲
- 教你用Python爬蟲自制有道翻譯詞典Python爬蟲
- 翻譯
- 有道翻譯最新爬蟲程式碼-基於Python3爬蟲Python
- 安卓應用安全指南翻譯完成安卓
- 蝴蝶書-task2: 文字推理、摘要、糾錯 transformers實現翻譯 OpenAI翻譯 PyDeepLX翻譯 DeepLpro翻譯ORMOpenAI
- Ubuntu安裝劃詞翻譯軟體Goldendict 單詞翻譯 句子翻譯UbuntuGo
- 如何完成中文翻譯日文線上翻譯
- WPF 被 靈格斯翻譯官 取詞帶崩
- 【翻譯】基於 Cypress 測試 React 應用React
- 【翻譯】構建響應式系統-vueVue
- Laravel 谷歌翻譯 /Bing 翻譯擴充套件包Laravel谷歌套件
- OpenCV翻譯專案總結二——Mat翻譯OpenCV
- 騰訊互動翻譯的坑爹翻譯
- Python爬蟲教程-07-post介紹(百度翻譯)(上)Python爬蟲
- Python爬蟲教程-08-post介紹(百度翻譯)(下)Python爬蟲
- 我常用的兩個翻譯神器!程式設計師必備 | JavaGuide程式設計師JavaGUIIDE
- Java爬蟲翻頁Java爬蟲
- js劃詞翻譯、螢幕取詞,取詞位置獲取(真正解決定位問題)JS
- [譯] 如何使用 Python 和 BeautifulSoup 爬取網站內容Python網站
- 「譯」如何用 Node.Js 和 Puppeteer 爬取網頁Node.js網頁