1. '''
  2. @Modify Time @Author
  3. ------------ -------
  4. 2019/9/2 0:19 laoalo
  5. '''
  6. import requests
  7. import json
  8. import urllib.parse
  9. from lxml import etree
  10.  
  11. def get_translate_data(word):
  12. post_data = {
  13. 'i': word,
  14. 'from': ' AUTO',
  15. 'to': 'AUTO',
  16. 'smartresult': 'dict',
  17. 'client': 'fanyideskweb',
  18. 'salt': '',
  19. 'sign': '7ec51a2113e35502456742617b7cf37d',
  20. 'ts': '',
  21. 'bv': 'a4f4c82afd8bdba188e568d101be3f53',
  22. 'doctype': 'json',
  23. 'version': '2.1',
  24. 'keyfrom': 'fanyi.web',
  25. 'action': 'FY_BY_REALTlME'
  26. }
  27. post_data = urllib.parse.urlencode(post_data).encode('utf-8')# 对输入的内容进行url编码
  28. header = {
  29. 'Origin': 'http://fanyi.youdao.com',
  30. 'Referer': 'http://fanyi.youdao.com/',
  31. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
  32. 'X-Requested-With': 'XMLHttpRequest'
  33. }
  34. youdao = r'http://fanyi.youdao.com/'
  35.  
  36. re = requests.post(url=youdao,headers=header,data=post_data).text
  37. response = re.replace('"',"'")
  38. # print(re) # 直接打印出来没有翻译结果
  39. # 将json格式的转成字典
  40. # print(response)
  41.  
  42. html = json.loads(re)
  43. result = html['translateResult'][0][0]['tgt']
  44. print(result)
  45.  
  46. if __name__ == '__main__':
  47. get_translate_data('我来自四川')

一份错误示例

  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
  5. data = {}
  6. data['i'] = '我爱你'
  7. data['from'] = 'AUTO'
  8. data['to'] = 'AUTO'
  9. data['smartresult'] = [dict]
  10. data['client'] = 'fanyideskweb'
  11. data['salt'] = ''
  12. data['sign'] = 'd01d0881f67f7d556a6c6d2bb441478e'
  13. data['doctype'] = 'json'
  14. data['version'] = '2.1'
  15. data['keyfrom'] = 'fanyi.web'
  16. data['action'] = 'FY_BY_CLICKBUTTION'
  17. data['typoResult'] = 'false'
  18. data = urllib.parse.urlencode(data).encode('utf-8')
  19.  
  20. respones = urllib.request.urlopen(url,data)
  21. html = respones.read().decode('utf-8')
  22. # print(html)
  23. target = json.loads(html)
  24. target = target['translateResult'][0][0]['tgt']
  25. print(target)

一份正确示例

用  requests.post().text 来读取json代码老是报错   "    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)  " 而用   urlopen.read()  就可行 ,为什么???

先整体抓包一下:

urlopen.read()放回的是一个json代码(意外发现getheaders放回的是头信息):

尝试打印出request.post的值发现它的结果是有道网页的html代码

  1. <!DOCTYPE html>
  2. <html xmlns='http://www.w3.org/1999/xhtml'>
  3. <head>
  4.  
  5. <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
  6. <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1' />
  7. <title>在线翻译_有道</title>
  8. <meta name='keywords' content='在线翻译'/>
  9. <meta name='description' content='有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语全文翻译、网页翻译、文档翻译服务。'/>
  10. <meta name='viewport' content='width=device-width, initial-scale=1.4, minimum-scale=1.0, maximum-scale=2.0'/>
  11. <link rel='canonical' href='http://fanyi.youdao.com'/>
  12. <link href='http://shared.ydstatic.com/plugins/search-provider.fanyi.xml' title='有道翻译' type='application/opensearchdescription+xml' rel='search'/>
  13. <link rel='shortcut icon' href='http://shared.ydstatic.com/images/favicon.ico' type='image/x-icon' />
  14. <link href='http://shared.ydstatic.com/fanyi/newweb/v1.0.20/styles/newweb/fanyi-newweb.min.css' rel='stylesheet' type='text/css'/>
  15.  
  16. <!--[if lte IE 8]>
  17. <script>
  18. window.onload = function(){
  19. document.body.className = document.body.className + ' less-ie8';
  20. };
  21. </script>
  22. <![endif]-->
  23. </head>
  24. <body class='fanyi-page'>
  25. <div class='fanyi__nav'>
  26. <div class='fanyi__nav__container'>
  27.  
  28. <ul class='fanyi__nav__list'>
  29. <li><a class='nav__tongchuan' target='_blank' href='http://tongchuan.youdao.com/?keyfrom=fanyi_web_tab'>同传<span class='tongchuan_new'>new</span></a></li>
  30. <li><a target='_blank'
  31. href='http://dict.youdao.com/appapi/redirect?redirectUrl=http%3A%2F%2Fyou.163.com%2Fitem%2Fdetail%3Fid%3D3394027%26from%3Dweb_hz_neibu_fyw_16&keyfrom=fyw_youdaofanyi&vendor=top'>翻译机</a></li>
  32. <li class='nav__rengong'>
  33. <a target='_blank' href='http://f.youdao.com/?vendor=fanyi-new-nav'>人工翻译</a>
  34. <div class='rengong__guide'>
  35. <a target='_blank' class='rengong__guide--con' href='http://f.youdao.com/?vendor=new-fanyicover'>
  36. <span class='tips__pointer tips__pointer--up'></span>
  37. <div class='rengong__guide--title'>网易自营人工翻译服务,专业、精准、地道!</div>
  38. <ul class='rengong__guide--list'>
  39. <li class='rengong__guide--sub'>快速翻译</li>
  40. <li>日常用语</li>
  41. <li class='right'>工作沟通</li>
  42. <li>地址信息</li>
  43. <li class='right'>商贸交流</li>
  44. <li>邮件往来</li>
  45. <li class='right'>文章节选</li>
  46. </ul>
  47. <div class='rengong__guide--line'></div>
  48. <ul class='rengong__guide--list rengong__guide--list--right'>
  49. <li class='rengong__guide--sub'>文档翻译</li>
  50. <li>专业论文</li>
  51. <li class='right'>产品介绍</li>
  52. <li>合同标书</li>
  53. <li class='right'>简历证件</li>
  54. <li>留学移民</li>
  55. <li class='right'>创意翻译</li>
  56. </ul>
  57. </a>
  58. <a class='i-know' href='javascript:;'>我知道了</a>
  59. </div>
  60. </li>
  61. <li><a target='_blank' href='http://ai.youdao.com/?keyfrom=fanyi-new-nav'>翻译API</a></li>
  62. <li><a target='_blank' href='http://fanyiguan.youdao.com/?vendor=fanyi-new-nav'>翻译APP</a></li>
  63. <li class='last'>
  64. <a class='login-link' href='javascript:;'>登录</a>
  65. </li>
  66. </ul>
  67. <a href='/?keyfrom=fanyi-new.logo' class='fanyi__nav__logo'></a>
  68. </div>
  69. </div>
  70. <div class='fanyi'>
  71. <div class='fanyi__operations'>
  72. <div class='fanyi__operations--right'>
  73. <span class='fanyi__operations--underline'>
  74. <label for='underlineWord'>划词</label>
  75. </span>
  76. </div>
  77. <div class='fanyi__operations--left'>
  78. <div id='langSelect' class='lang-select item-select'>
  79. <span class='select-text'>自动检测语言</span>
  80. <ul id='languageSelect' class='select clear'>
  81. <li class='default selected' data-value='AUTO'><a href='javascript:;'>自动检测语言</a></li>
  82. <li data-value='zh-CHS2en'><a href='javascript:;'>中文&nbsp; » &nbsp;英语</a></li>
  83. <li data-value='en2zh-CHS'><a href='javascript:;'>英语&nbsp; » &nbsp;中文</a></li>
  84. <li data-value='zh-CHS2ja'><a href='javascript:;'>中文&nbsp; » &nbsp;日语</a></li>
  85. <li data-value='ja2zh-CHS'><a href='javascript:;'>日语&nbsp; » &nbsp;中文</a></li>
  86. <li data-value='zh-CHS2ko'><a href='javascript:;'>中文&nbsp; » &nbsp;韩语</a></li>
  87. <li data-value='ko2zh-CHS'><a href='javascript:;'>韩语&nbsp; » &nbsp;中文</a></li>
  88. <li data-value='zh-CHS2fr'><a href='javascript:;'>中文&nbsp; » &nbsp;法语</a></li>
  89. <li data-value='fr2zh-CHS'><a href='javascript:;'>法语&nbsp; » &nbsp;中文</a></li>
  90. <li data-value='zh-CHS2de'><a href='javascript:;'>中文&nbsp; » &nbsp;德语</a></li>
  91. <li data-value='de2zh-CHS'><a href='javascript:;'>德语&nbsp; » &nbsp;中文</a></li>
  92. <li data-value='zh-CHS2ru'><a href='javascript:;'>中文&nbsp; » &nbsp;俄语</a></li>
  93. <li data-value='ru2zh-CHS'><a href='javascript:;'>俄语&nbsp; » &nbsp;中文</a></li>
  94. <li data-value='zh-CHS2es'><a href='javascript:;'>中文&nbsp; » &nbsp;西班牙语</a></li>
  95. <li data-value='es2zh-CHS'><a href='javascript:;'>西班牙语&nbsp; » &nbsp;中文</a></li>
  96. <li data-value='zh-CHS2pt'><a href='javascript:;'>中文&nbsp; » &nbsp;葡萄牙语</a></li>
  97. <li data-value='pt2zh-CHS'><a href='javascript:;'>葡萄牙语&nbsp; » &nbsp;中文</a></li>
  98. <li data-value='zh-CHS2it'><a href='javascript:;'>中文&nbsp; » &nbsp;意大利语</a></li>
  99. <li data-value='it2zh-CHS'><a href='javascript:;'>意大利语&nbsp; » &nbsp;中文</a></li>
  100. <li data-value='zh-CHS2vi'><a href='javascript:;'>中文&nbsp; » &nbsp;越南语</a></li>
  101. <li data-value='vi2zh-CHS'><a href='javascript:;'>越南语&nbsp; » &nbsp;中文</a></li>
  102. <li data-value='zh-CHS2id'><a href='javascript:;'>中文&nbsp; » &nbsp;印尼语</a></li>
  103. <li data-value='id2zh-CHS'><a href='javascript:;'>印尼语&nbsp; » &nbsp;中文</a></li>
  104. <li data-value='zh-CHS2ar'><a href='javascript:;'>中文&nbsp; » &nbsp;阿拉伯语</a></li>
  105. <li data-value='ar2zh-CHS'><a href='javascript:;'>阿拉伯语&nbsp; » &nbsp;中文</a></li>
  106. </ul>
  107. <input class='select-input' id='language' name='language' type='hidden' value='AUTO'>
  108. </div>
  109. <a class='fanyi__operations--machine' id='transMachine' href='javascript:;'>翻译</a>
  110. <a class='fanyi__operations--man clog-js' data-clog='AT_BUTTON_CLICK' data-pos='web.i.top' id='transMan' href='javascript:;'>人工翻译</a>
  111. <div class='tips__container fanyi__operations--man--tips'>
  112. <span class='tips__pointer tips__pointer--up'></span>
  113. <p>专业译员随时待命<br/>最快1分钟返回精准译文</p>
  114. <p class='man__tips--new'>【母语润色服务全新上线】</p>
  115. </div>
  116. </div>
  117. <div class='fanyi-error-message'></div>
  118. </div>
  119. <div class='fanyi__input'>
  120. <div class='input__original'>
  121. <div class='fanyi__input__bg'>
  122. <div id='docUploadBg' class='doc__upload--bg hidden'>
  123. <span class='doc-type'></span>
  124. <div class='doc-infos'>
  125. <p class='doc-name'></p>
  126. <span class='doc-error-msg hidden'></span>
  127. <span class='doc-size-msg hidden'></span>
  128. </div>
  129. <a class='doc-delete' href='javascript:;'></a>
  130. </div>
  131. <div id='docUploadCon' class='doc__upload--con'>
  132. <form id='docUploadForm' action1='http://ns013x.corp.youdao.com:13288/doc/upload' action='http://fanyi.youdao.com/trandoc/doc/upload' method='post' enctype='multipart/form-data'>
  133. <span>上传文档</span>
  134. <input name='your_file' disabled='disabled' type='file' id='docUploadFile' class='doc__upload--file'/>
  135. <div class='doc__upload--tip'>
  136. <span>全新中英文档互译</span>
  137. <a href='javascript:;' class='doc__upload--close'>&times;</a>
  138. </div>
  139. <div class='file__type--tips tips__container speaker__tips'>
  140. <span class='tips__pointer tips__pointer--down'></span>
  141. <span>全新文档翻译,支持docx /pdf 等格式中英互译,快来试用!</span>
  142. </div>
  143. </form>
  144. </div>
  145. <a id='inputDelete' class='input__original_delete'></a>
  146. <div id='inputOriginalCopy' class='input__original__area'></div>
  147. <textarea id='inputOriginal' dir='auto' class='input__original__area' placeholder='请输入你要翻译的文字或网址'></textarea>
  148. <div class='input__original__bar'>
  149. <div class='input__original__bar--fonts'>
  150. <span class='fonts__over'>0</span>/<span class='fonts__limited'>5000</span>
  151. </div>
  152. <a href='javascript:;' id='originalSpeaker' class='speaker'>
  153. <div class='tips__container speaker__tips'>
  154. <span class='tips__pointer tips__pointer--down'></span>
  155. <span class='tips__text--short'>朗读</span>
  156. </div>
  157. </a>
  158. </div>
  159. </div>
  160. <div class='fanyi__popularize'>
  161. <a href='javascript:;' target='_blank' class='clog-js' data-clog='AD_TEXT_CLICK'></a>
  162. </div>
  163. </div>
  164. <div class='input__target'>
  165. <div class='fanyi__input__bg'>
  166. <div id='docLangTip' class='doc-lang-tip'>选择翻译语言,然后点击翻译按钮,即可翻译文档</div>
  167. <div class='input__target__error' id='inputTargetError'></div>
  168. <div id='transTarget' dir='auto' class='input__target__text'></div>
  169. <textarea id='transTargetArea' class='input__target__text'></textarea>
  170. <div class='input__target__bar'>
  171. <a class='target__bar__update' id='updateResult'>修改翻译结果</a>
  172. <a href='javascript:;' id='targetSpeaker' class='speaker target__bar__parts'>
  173. <div class='tips__container speaker__tips'>
  174. <span class='tips__pointer tips__pointer--down'></span>
  175. <span class='tips__text--short'>朗读</span>
  176. </div>
  177. </a>
  178. <a href='javascript:;' id='targetCopy' class='copy target__bar__parts'>
  179. <div class='tips__container speaker__tips'>
  180. <span class='tips__pointer tips__pointer--down'></span>
  181. <span class='tips__text--short'>复制</span>
  182. </div>
  183. </a>
  184. <a href='javascript:;' id='targetStar' class='star target__bar__parts'>
  185. <div class='tips__container speaker__tips' id='targetStarTip'>
  186. <span class='tips__pointer tips__pointer--down'></span>
  187. <div class='tips__text--short'>翻译结果打分</div>
  188. <div class='star-con'>
  189. <span></span>
  190. <span></span>
  191. <span></span>
  192. <span></span>
  193. <span></span>
  194. </div>
  195. </div>
  196. </a>
  197. </div>
  198. <div class='input__update__suggest'>您提供的翻译将用于改善翻译质量,感谢您的建议!</div>
  199. <div class='input__target__dict'>
  200. <span class='resource'>来自有道词典结果</span>
  201. <div class='dict__word'>
  202. <span class='dict__word--letters'>美丽</span>
  203. <span class='dict__word--phonetic'>[měi lì]</span>
  204. </div>
  205. <div class='dict__relative'>
  206. <a>comeliness</a>
  207. <a>fairness</a>
  208. <a>goodliness</a>
  209. <a>loveliness</a>
  210. </div>
  211. <a class='dict__more clog-js' data-clog='RESULT_DICT_ALL_CLICK' href='javascript:;' target='_blank' >查看完整结果&gt;&gt;</a>
  212. </div>
  213. </div>
  214. <div class='fanyi__update__tip'><span class='pointer'></span>点击可查看其他翻译结果,或修改结果</div>
  215. <div class='fanyi__suggest__container' id='fanyiSuggest'>
  216. <div class='suggest__title'>
  217. <div class='suggest__title--text'>以下为该句多个翻译结果:</div>
  218. <a class='suggest__title--close' href='javascript:;'></a>
  219. </div>
  220. <ul>
  221. </ul>
  222. <div class='suggest__update__con'>
  223. <a href='javascript:;' class='suggest__update__btn'>改进此翻译</a>
  224. </div>
  225. </div>
  226. <div class='input__target__update'>
  227. <a class='update__sure update-disable' href='javascript:;'>确认修改</a>
  228. <a class='update__cancel' href='javascript:;'>取消</a>
  229. </div>
  230. <div class='download__area'>
  231. <a target='_blank' href='http://f.youdao.com/?vendor=fanyibanner'>
  232. <div class='fanyi__banner--title'>试试有道人工翻译?</div>
  233. <div class='fanyi__banner--desc'>精选同行业资深译员,专家审校润色,让你尊享快捷又准确的人工翻译!</div>
  234. <span class='fanyi__banner--btn'>立即体验</span>
  235. </a>
  236. </div>
  237. </div>
  238. </div>
  239. <div class='inside__products'>
  240. <div class='inside__products__item inside__products__item--left'>
  241. <a target='_blank' href='http://f.youdao.com/?vendor=fanyi-new-bottom'>
  242. <div class='products__item--cell rengong'>
  243. <h4>有道人工翻译/母语润色</h4>
  244. <p class='products__item__desc'>全球最优秀的译员时刻待命<br/>专业、精准、地道!</p>
  245. <span class='rengong__intro'>了解更多&gt;</span>
  246. </div>
  247. </a>
  248. </div>
  249. <div class='inside__products__item'>
  250. <a target='_blank' href='http://tongchuan.youdao.com?keyfrom=fanyi_web_banner'>
  251. <div class=' products__item--half--cell products__tongchuan '>
  252. <h4>有道同传</h4>
  253. <p class='products__item__desc'>商务会议同传服务提供商<br/>专业、精准、可靠</p>
  254. </div>
  255.  
  256. </a>
  257. <a target='_blank' href='http://fanyiguan.youdao.com/?vendor=fanyi-new-bottom'>
  258. <div class='products__item--half--cell products__fanyiguan'>
  259. <h4>有道翻译官 APP</h4>
  260. <p class='products__item__desc'>支持语音翻译和拍照翻译<br/>107种语言的随身翻译</p>
  261. </div>
  262. </a>
  263. </div>
  264. </div>
  265. </div>
  266. <form id='mapForm' target='_blank' method='POST' action='http://f.youdao.com/?path=fanyi&vendor=new-fanyiinput'>
  267. <input id='mapInput' type='hidden' name='text' value=''/>
  268. </form>
  269. <div class='fanyi__footer'>
  270. <a target='_blank' href='http://www.youdao.com/?keyfrom=fanyi-new.copyright'>有道首页</a><span class='c_fnl'>|</span><a target='_blank' href='http://dsp.youdao.com/?keyfrom=fanyi-new.copyright'>有道智选</a><span class='c_fnl'>|</span><a target='_blank' href='https://ke.youdao.com/?keyfrom=fanyi-new.copyright'>有道精品课</a><span class='c_fnl'>|</span><a target='_blank' href='http://www.youdao.com/about/index.html'>关于有道</a><span class='c_fnl'>|</span><a target='_blank' href='http://i.youdao.com'>官方博客</a>
  271. <p class='c_fcopyright'>© 2019 网易公司 京ICP证080268号</p>
  272. </div>
  273. <div class='side__nav'>
  274. <div class='rengong-weixin'>
  275. <span class='tips__pointer tips__pointer--right'></span>
  276. 扫描二维码<br/>
  277. 关注有道人工翻译
  278. </div>
  279. <a href='http://f.youdao.com/?vendor=new-fanyientrance' target='_blank' class='side__nav__flow'>人工<br/>翻译</a>
  280. <a target='_blank' href='http://survey2.163.com/html/fanyis201103a2/paper.html?id=168824090@10.168.1.8@0' class='side__nav__feedback'>满意度<br/>反馈</a>
  281. <a href='javascript:;' class='side__nav__backtop'></a>
  282. </div>
  283. <div id='YOUDAO_SELECTOR_WRAPPER' bindTo='inputOriginal:transTarget'
  284. style='display:none; z-index: 101; margin:0; border:0; padding:0; width:320px; height:240px;'></div>
  285. <div class='less-ie8-tip'>请在IE8以上版本,或Chrome、火狐、Safari等浏览器中访问该网页。</div>
  286. <div class='dict-download-guide'>
  287. <div class='guide-con'>
  288. <a href='javascript:;' target='_blank' class='download-guide-link'>
  289. <img class='download-guide-img' src='http://shared.ydstatic.com/images/favicon.ico'/>
  290. </a>
  291. <span class='guide-close'></span>
  292. </div>
  293. </div>
  294. <audio id='playVoice' style='position:absolute;top:-999px;left:-999px;width:1px;height:1px;'></audio>
  295. <div class='upload__cover'>
  296. <div class='upload__cover--content'>
  297. <div class='upload__cover--title'><span class='upload__percent'></span>解析中</div>
  298. <div class='upload__filename'></div>
  299. <div class='upload__progress--con'>
  300. <div class='upload__progress'></div>
  301. </div>
  302. <a class='upload--cancel' href='javascript:;'>取消</a>
  303. </div>
  304. </div>
  305. <div id='dialogCover' class='dialog-cover'></div>
  306. <div id='loginAlert' class='dialog-alert'>
  307. <a href='javascript:;' class='dialog-alert--close'></a>
  308. <div class='title'>如需使用文档翻译功能,请先登录。</div>
  309. <div class='content'></div>
  310. <div class='btns-con'>
  311. <a href='javascript:;' class='cancel'>取消</a>
  312. <a href='javascript:;' class='ok'>确定</a></div>
  313. </div>
  314. <div id='loginWindow' class='dialog-alert'>
  315. <a href='javascript:;' class='dialog-alert--close'></a>
  316. <h3 class='login-title'>使用网易邮箱登录</h3>
  317. <div class='content urs-login-content' ></div>
  318. <div class='other third-login'>
  319. <a class='third-login-weixin'>
  320. <img src='http://shared.ydstatic.com/fanyi/login/images/weixin@2x.png' alt='微信登录' title='微信登录' height='44'/>
  321. </a>
  322. <a class='third-login-weibo'>
  323. <img src='http://shared.ydstatic.com/fanyi/login/images/weibo@2x.png' alt='新浪微博登录' title='新浪微博登录' height='44'/>
  324. </a>
  325. <a class='third-login-qq'>
  326. <img src='http://shared.ydstatic.com/fanyi/login/images/qq@2x.png' alt='QQ帐号登录' title='QQ帐号登录' height='44' />
  327. </a>
  328. </div>
  329. </div>
  330. <!-- START rlog -->
  331. <script>
  332. var _rlog = _rlog || [];
  333. // 指定 product id
  334. _rlog.push(['_setAccount' , 'fanyiweb']);
  335. </script>
  336. <script defer src='http://shared.ydstatic.com/js/rlog/v1.js'></script>
  337. <!-- END rlog -->
  338. </body>
  339. <script type='text/javascript'>
  340. var global = {};
  341. </script><script type='text/javascript' src='http://shared.ydstatic.com/api/fanyi-web/assets/index.min.js' charset='utf-8'></script>
  342. <script type='text/javascript' src='http://shared.ydstatic.com/fanyi/newweb/v1.0.20/scripts/newweb/fanyi.min.js'></script>
  343. </html>

request.post()的结果

所以会出现解析错误

  1. '''
  2. @Modify Time @Author
  3. ------------ -------
  4. 2019/9/2 0:19 laoalo
  5. '''
  6. import requests
  7. import json
  8. import urllib.parse
  9. import urllib.request
  10. from lxml import etree
  11.  
  12. def get_translate_data(word):
  13. post_data = {
  14. 'i': word,
  15. 'from': ' AUTO',
  16. 'to': 'AUTO',
  17. 'smartresult': 'dict',
  18. 'client': 'fanyideskweb',
  19. 'salt': '15673547889901',
  20. 'sign': '7ec51a2113e35502456742617b7cf37d',
  21. 'ts': '1567354788990',
  22. 'bv': 'a4f4c82afd8bdba188e568d101be3f53',
  23. 'doctype': 'json',
  24. 'version': '2.1',
  25. 'keyfrom': 'fanyi.web',
  26. 'action': 'FY_BY_REALTlME'
  27. }
  28. post_data = urllib.parse.urlencode(post_data).encode('utf-8')# 对输入的内容进行url编码
  29. header = {
  30. 'Origin': 'http://fanyi.youdao.com',
  31. 'Referer': 'http://fanyi.youdao.com/',
  32. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
  33. 'X-Requested-With': 'XMLHttpRequest'
  34. }
  35. youdao = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
  36.  
  37. # re = requests.post(url=youdao,data=post_data).text
  38. # # print(re) # 直接打印出来没有翻译结果
  39. # # 将json格式的转成字典
  40. #
  41. # html = json.loads(re)
  42. # result = html['translateResult'][0][0]['tgt']
  43. # print(result)
  44.  
  45. re = urllib.request.urlopen(url=youdao,data=post_data)
  46. html = re.read().decode('utf-8')
  47. target = json.loads(html)
  48. print(target['translateResult'][0][0]['tgt'])
  49.  
  50. if __name__ == '__main__':
  51. get_translate_data(input("请输入:"))

修订后的代码


  •  urlopen(url, data=None, proxies=None) : 创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。

    •   参数url表示远程数据的路径,一般是网址;
    •   参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get);
    •   参数proxies用于设置代理
  • urlopen与requests.get()对比
    •   urlopen打开URL网址,url参数可以是一个字符串url或者是一个Request对象,返回的是http.client.HTTPResponse对象.http.client.HTTPResponse对象大概包括read()、readinto()、getheader()、getheaders()、fileno()、msg、version、status、reason、debuglevel和closed函数,其实一般而言使用read()函数后还需要decode()函数,返回的网页内容实际上是没有被解码或的,在read()得到内容后通过指定decode()函数参数,可以使用对应的解码方式。
    •   requests.get()方法请求了站点的网址,然后打印出了返回结果的类型,状态码,编码方式,Cookies等内容

有道翻译爬取【json】的更多相关文章

  1. 豆瓣电影信息爬取(json)

    豆瓣电影信息爬取(json) # a = "hello world" # 字符串数据类型# b = {"name":"python"} # ...

  2. 基于nodejs模拟浏览器post请求爬取json数据

    今天想爬取某网站的后台传来的数据,中间遇到了很多阻碍,花了2个小时才请求到数据,所以我在此总结了一些经验. 首先,放上我所爬取的请求地址http://api.chuchujie.com/api/?v= ...

  3. 爬取json Swaggerui界面

    对一个静态的网页进行爬取. 要获取的内容分别为 paths 标签下的 1./quota/开头的路径 2. get 这样的httpmode 3 description对应的描述 4 summary 5 ...

  4. 使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译

    1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...

  5. 爬虫学习(四)——post请求爬取

    百度翻译爬取数据 import urllib.requestimport urllib.parsepost_url = "https://fanyi.baidu.com/sug"h ...

  6. python 手机app数据爬取

    目录 一:爬取主要流程简述 二:抓包工具Charles 1.Charles的使用 2.安装 (1)安装链接 (2)须知 (3)安装后 3.证书配置 (1)证书配置说明 (2)windows系统安装证书 ...

  7. 爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

    1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的 ...

  8. Requests抓取有道翻译结果

    Requests比urllib更加方便,抓取有道翻译非常的简单. import requests class YouDao():     def __init__(self,parm):        ...

  9. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

随机推荐

  1. 请正视抑郁症(附Zung氏抑郁自评量表(SDS))

    为什么要记录? 因为去年开始关注抑郁症这块,逐渐发现抑郁症原来不只是简单的情绪问题,它是情绪与实质性的生理相互作用并紧密关联的疾病,并不是单纯的劝解自己就可以疗愈的一种疾病,它的存在需要换着身边的人帮 ...

  2. TensorFlow学习笔记6-数值计算基础

    TensorFlow学习笔记6-数值计算 本笔记内容为"数值计算的基础知识".内容主要参考<Deep Learning>中文版. \(X\)表示训练集的矩阵,其大小为m ...

  3. C++学习笔记(七)--共用体、枚举、typedef

    1.共用体 union其定义与结构体类似:union 类型名{ 成员表列;};声明变量的方法也类似: a. union 类型名{            b. union { c.类型名 变量名; 成员 ...

  4. [Web 前端] 009 css 常用的文本样式设置

    常用的文本 css 样式 概览 参数 释义 举例 color 设置文字的颜色 color:red; font-size 设置文字的大小 font-size:12px; font-family 设置文字 ...

  5. HDFS-HA高可用工作机制

    1.HDFS-HA概述 1)所谓HA(high available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的 ...

  6. npm搭建vue全过程

    如何在Window下安装node\cnpm,并安装vue.js,创建项目 参考链接:https://blog.csdn.net/Corey_mengxiaodong/article/details/8 ...

  7. 给定两个list A ,B,请用找出 A ,B中相同的元素,A ,B中不同的元素 ??

    A.B 中相同元素:print(set(A)&set(B)) A.B 中不同元素:print(set(A)^set(B))

  8. axios动态数据的获取

    跨域:前端处理.后端处理 前端方法:代理 后端加header    第一步:全局安装axios cnpm install axios --save-dev        第二步: methods:{ ...

  9. javaScript基础--概念以及使用

    1.什么javascript? 为什么要学习? 处理网站动态特效 为后期课程打基础 什么是javascript? 是一个客户端的具有安全性的脚本语言. js和h5 的关系 :  都是向静态的元素动起来 ...

  10. Nodejs 学习笔记 --- 安装与环境配置

    一.安装Node.js步骤 1.下载对应自己系统对应的 Node.js 版本,地址:https://nodejs.org/zh-cn/      2.选安装目录进行安装      3.环境配置    ...