在有道翻譯頁面中打開開發者工具,在Headers板塊找到Request URL以及相應的data。 上面這種很大可能被有道網頁給識別出來不是人工在訪問,而是代碼在訪問。 此時我們可以加個‘User-Agent’代理。通過設置User Agent來達到隱藏身份的目的,一般情況下瀏覽器是通過User-A ...
在有道翻譯頁面中打開開發者工具,在Headers板塊找到Request URL以及相應的data。
import urllib.request
import urllib.parse
import json
content=input('請輸入需要翻譯的內容:')
#_o要去掉,否則會出先error_code:50的報錯
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
#開發者工具里有,i和doctype鍵不可少
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='15695569180611'
data['sign']='5b0565493d812bc5e713b895c12d615d'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTTIME'
#將字典類型的請求數據轉化為url編碼,並將編碼類型轉變為'utf-8'類型
data=urllib.parse.urlencode(data).encode('utf-8')
#向url請求data的響應結果
response=urllib.request.urlopen(url,data)
#讀取返回數據內容,decode是轉換返回數據的格式為str
html=response.read().decode('utf-8')
#使用json將字元串轉化成字典
target=json.loads(html)
#結果在key='translateResult'的三層列表的key='tgt'中
print("翻譯結果:%s" %(target['translateResult'][0][0]['tgt']))
上面這種很大可能被有道網頁給識別出來不是人工在訪問,而是代碼在訪問。
此時我們可以加個‘User-Agent’代理。通過設置User Agent來達到隱藏身份的目的,一般情況下瀏覽器是通過User-Agent來識別的。
通過調用urllib.request.Request()來設置UA。
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None) This class is an abstraction of a URL request.
url should be a string containing a valid URL.
headers should be a dictionary #headers要為字典
有兩種方法設置User Agent:
1.在創建Request對象的時候,填入headers參數(包含User Agent信息),這個Headers參數要求為字典;
2.在創建Request對象的時候不添加headers參數,在創建完成之後,使用add_header()的方法,添加headers。
import urllib.request
import urllib.parse
import json
import time
while True:
content=input('請輸入需要翻譯的內容(輸入"q!退出程式"):')
if content=='q!':
break;
#_o要去掉,否則會出先error_code:50的報錯
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
'''
第一種方法
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
'''
data={}
#開發者工具里有,i和doctype鍵不可少
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='15695569180611'
data['sign']='5b0565493d812bc5e713b895c12d615d'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTTIME'
#將字典類型的請求數據轉化為url編碼,並將編碼類型轉變為'utf-8'類型
data=urllib.parse.urlencode(data).encode('utf-8')
'''
第一種方法
req=urllib.request.Request(url,data,head)
'''
#第二種方法設置User Agent
#創建Request對象
req=urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')
#傳入創建好的Request對象
response=urllib.request.urlopen(req)
#讀取響應信息並解碼
html=response.read().decode('utf-8')
#使用json將字元串轉化成字典
target=json.loads(html)
#結果在key='translateResult'的三層列表的key='tgt'中
print("翻譯結果:%s" %(target['translateResult'][0][0]['tgt']))
#5秒一次
time.sleep(5)