Webインターフェイスの双方向辞書、実際には、することができ爬虫類アナログ入力キー、スプライシングいるFormDataウェイ辞書インターフェースについて、クロール戻り値、実際にAjaxが動的に生成された翻訳なので、外部の変換ルックの実装アナログインターフェースこと、爬虫類同等のアナログブラウザは、実際には、実際にキーワードを入力し、それほど気にしないでください、それにJSONパラメータを渡し、適切な方法のWebインターフェイスを直接呼び出すの言葉を話すが、彼らはシミュレートされたウェブクローラを上陸させ、道辞書ウェブインターフェースを呼び出します翻訳プロセスを取得します。
ブラウザの入力操作、分析的な方法の辞書とウェブインタフェースURL形式の翻訳
#爬虫模拟调用有道词典web接口调用 from urllib import request from urllib import parse import re class YoudaoTranslator: def __init__(self, key): self.key = key def __getData(self): # 构造 有道词典web接口所需的Form data formdata = { "i": self.key, "from": "AUTO", "to": "AUTO" , "smartresult": "dict", "client": "fanyideskweb", "salt": "15763837022114", "sign": "2b12fd214e066f53bc3455a126d7a509", "ts": "1576383702211", "bv": "5575008ba9785f184b106838a72d6536", "doctype": "json", "version": "2.1", "keyfrom": "fanyi.web", "action": "FY_BY_REALTlME" } data = parse.urlencode(formdata).encode(encoding="utf-8") return data def __getPage(self): #获得模拟浏览器请求,获得Ajax返回值 header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"} url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule" req = request.Request(url, data=YoudaoTranslator.__getData(self), headers=header) res = request.urlopen(req).read().decode() return res def __Pat(self): #解析ajax返回json字符串,正则匹配获取翻译值 pat = r'"tgt":"(.*?)"}]]' result = re.findall(pat, YoudaoTranslator.__getPage(self)) print(result[0]) return result def Translator(self): YoudaoTranslator.__Pat(self) if __name__ == '__main__': i = YoudaoTranslator("人格心理学") i.Translator()
然后是运行结果