Python爬虫能够实现的功能有很多,就看你如何去使用它了。今天小千就来教大家如何去利用Python爬虫自制一个有道翻译词典。

      首先打开有道翻译页面,尝试输入hello,就出现翻译了,可以自动翻译。有同学写了爬虫去请求上面的 的链接,宋姐姐要说错啦。因为这个是通过ajax实现的。如何实现的呢?谷歌浏览器F12或者右键选择->检查.

      大家点开请求可以看到下图 :

      接下来重点来了,难点来了!!!salt,sign,ts,bv表示什么?如果不携带可不可以?

      其实这个是js中创建出来的并在每次请求的时候加载到这里的?怎么知道这个值是什么?这时我们就要查看源代码了,右键--->查看源代码:

      这个文件的js就是我们要找的,点开js文件看看是啥?

      哇塞这个是什么鬼?直接吓跑大家。此时考验到家耐心和信心的地方到啦 ,我们有工具可以直接格式化这些的,站长工具点开就可了,切记将所有的代码复制粘贴到里面直接格式化就可以。将格式化好的拷贝到你的pycharm中,然后strl+f查找‘sign’。(切记按照步骤)

      可以分析出:

      ts:就是时间戳,而js的时间戳是13位如:1583934479084,python的time.time()是浮点型的如:1583934450.832445 ,要想得到js的时间戳就要是: r= str(int(time.time() * 1000))

      bv:n.md5(navigator.appVersion) 表示浏览器版本进行md5加密

      salt:r + parseInt(10 * Math.random(), 10); 表示的是时间戳拼接一个0-9的随机数

      python实现就是:f = r + str(random.randint(0, 9))

      sign:n.md5("fanyideskweb" + e + i + "Nw(nmmbP%A-r6U3EUn]Aj")

      其中e表示要查询的内容,此时如果我们要查询长城则e=‘长城’

      i就是你的salt值,与前面的常量值 “fanyideskweb” 和后面的常量值“Nw(nmmbP%A-r6U3EUn]Aj” 进行拼接后使用md5加密

      补充python的md5加密:

      此时我们需要的内容全部准备完毕!

      通过请求获取的返回结果response是json格式的,此时可以使用bejson.com 进行格式化

      所以我们通过json就方便提取数据了,其中‘tgt’就是翻译后的内容。

      不说那么多了上代码:

      大家将代码运行一下看到:{“errorCode”:50} 的结果没有翻译成功!这是为啥呢?

      就是大家在爬取的时候将链接:url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

      中的‘_o’务必切记去除掉,这个也是有道反扒的一种机制。(这个可能就是困扰很多同学的地方)

希望本文的分享能帮到学Python的小伙伴们。还想了解哪方面的知识,可以在下面留言。

本文来自千锋教育,转载请注明出处。


©著作权归作者所有:来自51CTO博客作者戏精程序媛的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. VsCode常用设置,新手必备!
  2. web前端开发都用什么软件?
  3. 价值200万的小米LOGO给UI设计师带来了什么?
  4. 动态记忆网络:向通用NLP更近一步
  5. 一文讲解回流和重绘
  6. GAN毕业手册:从零到一构建自己的GAN模型
  7. 送1万美元鼓励员工离职创业,亚马逊是疯了吗?
  8. 无代码开发,站到了程序员鄙视链顶端
  9. 陈丹琦博士论文翻译:神经阅读理解与超越(Neural Reading Comprehen

随机推荐

  1. 最新JGJ311-2013Word版建筑深基坑工程施
  2. 项目中如何实现读写分离?怎么配置?
  3. 期待周末,补个觉、撸篇文
  4. AQS简简单单过一遍
  5. 一览 JDK 并发包(J.U.C)
  6. JDK 1.8 中的日期与时间 API 一览
  7. Mybatis001-第一个Mybatis程序
  8. 新零售智能化升级:RPA+AI塑造客服数字化新
  9. 来吧,一起刷题!Inversion of Java Intervie
  10. 拆分示例,补个思维导图