爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止。

反爬思路目前知道的有:User-Agent,Cookie,Referer,访问速度,验证码,用户登录及前端js代码验证等。本例遇到js验证 User-Agent Referer Cookie共计4种反爬机制。

关键部分是,参数headers和data的构造,headers要进行反复测试,data数据里面的变量查找思路。

参考资料:

有道翻译页面,左边输入要翻译的字符串,右边会自动输出翻译的结果,如下图

经过多次输入字符测试,发现页面无刷新,猜测可能使用ajax,然后进行抓包分析,发现的确使用ajax传输数据

代码如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import urllib

import urllib2

import time

import hashlib

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

keyword = raw_input('请输入要翻译的字符串: ')

# headers作用模拟浏览器

headers = {

# "Accept": "application/json, text/javascript, */*; q=0.01",

# "Connection": "keep-alive",

# "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",

"Cookie": "你的浏览器cookie值",

"Referer": "http://fanyi.youdao.com/",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",

# "X-Requested-With": "XMLHttpRequest",

}

salt = str(int(time.time()*1000))

m = hashlib.md5()

str = "fanyideskweb" + keyword + salt + "ebSeFb%=XZ%T[KZ)c(sy!"

m.update(str)

sign = m.hexdigest().encode('utf-8')

print(sign)

# data为post请求数据

data = {

"i":keyword,

"from":"AUTO",

"to":"AUTO",

"smartresult":"dict",

"client":"fanyideskweb",

"salt":salt,

"sign":sign,

"doctype":"json",

"version":"2.1",

"keyfrom":"fanyi.web",

"action":"FY_BY_REALTIME",

"typoResult":"false"

}

# 对post上传的数据进行urlencode编码

data = urllib.urlencode(data)

# urllib 仅可以接受URL,不能创建 Request 类实例,也不能设置参数headers ,但可以对url进行编码,而urllib2不能编码,所以经常一起使用

# 而urllib2.urlopen(url)不能构造复杂的request,所以要使用urllib2.Request(url,data=data,headers=headers),2者都是有data参数时表示post提交数据,headers的值为模仿浏览器请求头里面的的数据,格式为字典,让服务器接受的数据看起来像使用浏览器访问。

request = urllib2.Request(url,data=data,headers=headers)

response = urllib2.urlopen(request)

print(response.read())

代码测试,如下图

python有道翻译法语-使用python2爬取有道翻译相关推荐

  1. python有道翻译-使用python2爬取有道翻译

    爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止. 反爬思路目前知道的有:User-Ag ...

  2. python爬取有道翻译的代码_使用python2爬取有道翻译

    爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止. 反爬思路目前知道的有:User-Ag ...

  3. python 爬取有道词典的翻译 *渔夫版

    前言 在小甲鱼课程里学习到的python爬取有道词典的翻译,发现一些东西不是很适用于现在,网上给出的答案分为两种 一.去掉 "_o" import urllib.request i ...

  4. 基于python爬取有道翻译,并在线翻译

    基于python爬取有道翻译,并在线翻译 由于我也是爬虫新学者,有什么做的不对的请多加包涵 我们需要使用的库如下 from urllib import request import urllib im ...

  5. python爬取有道翻译

    python爬虫爬取有道翻译教程 编写环境 为了宝宝们能够正确读懂本教程,在正式开始前,宝宝们需要搭建的环境如下: 连接互联网的win10电脑,(win7也可以) Google浏览器(版本无要求) P ...

  6. 解决python爬取有道翻译数据时,VSCode输出翻译乱码现象

    基于QQ浏览器爬取有道数据翻译. 如图: 用的VSCode 但是我用 python idle3.5打开 代码都一样,只是换了编译环境. 总结: 刚开始接触python实现网页爬取相关数据.将其关键点总 ...

  7. python利用mysql数据库实现一个中英文翻译程序兼单词试卷生成并改阅功能,并可以爬取有道官网进行在线翻译。

    直接上运行截图(代码在后面) 开始界面 使用navicat查看mysql数据库中的数据 单词查询功能测试 本地翻译一个本地数据库中有的单词 本地翻译一个本地数据库中没有的单词 爬取有道官网进行在线翻译 ...

  8. python爬取有道词典json报错,求帮助!

    python爬取有道词典json报错,求帮助! import urllib.request import urllib.parse import json import time import ran ...

  9. 手把手教学--Python爬取有道词典

    本篇文章做法参考了https://www.bilibili.com/video/av4050443/?p=55这个视频中的方法,并在此基础上加以修改,最终实现的结果如下: 在爬取有道词典之前,我们应该 ...

最新文章

  1. 程序员常用网址,必须收藏
  2. ORACLE-osi分层模型.md
  3. 记一次内核模块查看 - 初步通过文件厂商判断有无可疑内核模块
  4. drtek收音机使用说明_一百年前的便携式矿石收音机长啥样?这台1919年产品给你答案...
  5. Tengine ngx_http_sysguard_module 过载保护模块使用
  6. Dockerfile中的保留字指令讲解
  7. 前端利器倚天剑之sublime
  8. 企业实战(Jenkins+GitLab+SonarQube)_05_Jenkins创建管理员用户
  9. 差异表达基因变化倍数_2020年筛个基因也还能发SCI?
  10. using的一种用法
  11. 天天模拟器显示获取服务器失败,天天模拟器FAQ、天天模拟器常见问题快速帮助...
  12. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard
  13. 中国十大电子商务网站排名揭晓
  14. 颜值是第一生产力 - Windows Terminal
  15. windows下编译Sqlite-3.38.0及使用(存储json)
  16. Social LSTM: Human Trajectory Prediction in Crowded Spaces 论文翻译
  17. Go实现简易聊天室(群聊)
  18. 计算机培训ppt教案,课件制作的教案
  19. android 后台键盘按键监听,android键盘的监听
  20. 2022-08-04 乐理知识(三) 如何打拍子——V字打拍法,三角形打拍法,常见节奏型:二八,四十六,前十六后八,前八后十六,前后附点,大附点,大小切分,八三拍的节奏型及其变体

热门文章

  1. 如何迭代pandas dataframe的行
  2. DGA域名——可以每天只生成一个域名,因此最多存在365个 DGA域名;
  3. visibility和display隐藏元素的区别
  4. JavaScrip(一)JavaScrip的写法
  5. DISK 100% BUSY,谁造成的?(ok)
  6. 个人作业1 四则运算题目生成程序
  7. 自学it18大数据笔记-第三阶段Spark-day04——会持续更新……
  8. Bete冲刺第五阶段
  9. Android Activity生命周期举例说明(图文)
  10. Qt+MinGW+OpenCV开发环境在win7系统下的搭建(最新20140423)