有道翻譯的爬取


有道翻譯的爬取

Python作為爬蟲的強大人盡皆知,一個人不使用python爬取些什么,那么他的Python生涯一定是不完整的,這里簡單寫一下用Python爬取有道翻譯的教程。

關於有道翻譯的爬取網上鏈接很多,這里爬取的時候發現有道反爬蟲機制有一個小bug,直接繞過就可以了。

話不多說,現在開始。

一 服務器數據的獲取

打開有道翻譯:http://fanyi.youdao.com/     (本人用谷歌瀏覽器)

右擊檢查、點擊network

wps331F.tmp

在翻譯框輸入任意字符后點擊headers

wps3320.tmp

將每一項挨個點開,尋找post項(瀏覽器向服務器返回數據一項)

這里得到返回的服務器地址:

Request URL: http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

向服務器返回的數據向下拖可以看到:

wps3330.tmp

這些數值將以字典形式返回到服務器。其中(salt,sign,ts,bv)四種形式為反爬蟲機制需要的數據,我們把它刪去就好(為什么這個反爬蟲沒生效?)

然后將返回地址http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

改為:

http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule

二  python代碼的書寫

由於urllib自帶對返回數據的處理,我們只需要將返回值以字典的形式傳入,並且通過

Data=urllib.parse.urlencode(dir)即可對數據進行處理,生成返回值

wps3331.tmp

通過request.Urlopen返回一個字典:

wps3332.tmp

用json處理后讀取即可

三 結果如下圖

本人在此處還搭配了itchat,實現微信的簡單翻譯。

wps3333.tmp

四 源碼如下

from urllib import request
import urllib
import json
import itchat,os,pinyin,shutil
from itchat.content import *
def youdao_tran(tran_word):
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={'i':tran_word,
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_REALTIME',
'typoResult':'false'}
    data=urllib.parse.urlencode(data).encode('utf-8')
    responce=request.urlopen(url,data)
    reply=json.loads(responce.read().decode(encoding='utf-8'))['translateResult'][0][0]['tgt']
print(reply)
return reply
@itchat.msg_register(TEXT)#只對文本信息進行操作
def auto_reply(msg):
if msg['Text'].split(':')[0]=='翻譯':
        defaultReply = youdao_tran(msg['Text'].split(':')[1])
return defaultReply
# 為了讓實驗過程更加方便(修改程序不用多次掃碼),我們使用熱啟動
itchat.auto_login(hotReload=True)#生成Qcode碼,掃描成功即可登錄網頁版微信
itchat.run()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM