赞
踩
import urllib.request import urllib.parse import json import time # url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'#去掉url中的_o url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' while True: content = input('请输入需要翻译的内容(输入"q!"退出程序):') if content == "q!": break data = { 'i': content, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '15458876971100', 'sign': '08de3448974468c00f2a578e2cab7cf8', 'ts': '1545887697110', 'bv': '363eb5a1de8cfbadd0cd78bd6bd43bee', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTIME', 'typoResult': 'false', } headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'Referer': 'http://fanyi.youdao.com/', } data = urllib.parse.urlencode(data).encode('utf-8') # print(data) # print(type(data))#(1)<class 'bytes'> req = urllib.request.Request(url,data=data,headers=headers) response = urllib.request.urlopen(req) html = response.read().decode('utf-8') # print(html) # print(type(html))#(2)<class 'str'> req = urllib.request.Request(url,data) req.add_header('Referer','http://fanyi.youdao.com/') req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36') response = urllib.request.urlopen(req) html = response.read().decode('utf-8') # print(html) # print(type(html))#(2)<class 'str'> target = json.loads(html) # print(target) # print(type(target))#<class 'dict'> # a = target['translateResult'][0][0]['tgt'] # print(a) print('翻译结果:%s' %(target['translateResult'][0][0]['tgt'])) # print(req.headers) time.sleep(5)#延时提交时间
import urllib.request import urllib.parse import json # url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'#去掉url中的_o content = input('请输入需要翻译的内容:') url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' data = { 'i': content, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '15458876971100', 'sign': '08de3448974468c00f2a578e2cab7cf8', 'ts': '1545887697110', 'bv': '363eb5a1de8cfbadd0cd78bd6bd43bee', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTIME', 'typoResult': 'false', } headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'Referer': 'http://fanyi.youdao.com/', } data = urllib.parse.urlencode(data).encode('utf-8') # print(data) # print(type(data))#(1)<class 'bytes'> req = urllib.request.Request(url,data=data,headers=headers) response = urllib.request.urlopen(req) html = response.read().decode('utf-8') # print(html) # print(type(html))#(2)<class 'str'> target = json.loads(html) # print(target) # print(type(target))#<class 'dict'> # a = target['translateResult'][0][0]['tgt'] # print(a) print('翻译结果:%s' %(target['translateResult'][0][0]['tgt'])) print(req.headers)
两种方法,分别设置这个headers参数有两种途径,实例化Request对象的时候将headers参数传进去和通过add_header()方法往Request对象添加headers
1.由客户端和服务端之间进行请求-响应时,两种最常用到的方法就是 POST和GET
2.通常,GET是从指定的服务器请求数据,而POST是向指定的服务器提交要被处理的数据(这不是绝对的,因为在现实情况中,GET也用来提交数据给服务器)
3.HTTP是基于请求-相应的模式,{客户端发出的请求叫Request,服务端的相应叫Response}
4.Request Headers是客户端发送请求的Headers,这个常常被服务器用来判断是否来自‘非人类’的访问,一般是通过User-Agent来识别,普通浏览器会通过该内容向访问网站提供你所使用的浏览器类型,操作系统,浏览器内核等信息的标识,而使用python访问的话,User-Agent会被
定义为python-urllib/3.4
5.如何用python提交POST表单?
urlopen函数有一个data参数,如果给这个参数赋值,那么HTTP的请求就是使用POST方式
如果data的值NULL,也就是默认值,那么HTTP的请求就是使用GET方式
6.data参数的值必须符合这个application/x-www-form-urlencoded的格式,还要用urllib.parse.urlencode()
将字符串转换为这个格式
7.Request有个headers参数,通过设置这个参数,可以伪造成浏览器访问,
设置这个headers参数有两种途径,实例化Request对象的时候将headers参数传进去和通过add_header()方法
往Request对象添加headers
第一种方法要求headers必须是一个字典的形式:
8.通过修改User-Agent实现隐藏,不过如果这是一个用于抓取网页的爬虫(例如说批量下载某些图片)那么一个ip在短时间内连续访问,很明显不符合普通人的行为标准的,同时也给服务器造成不小的压力
因此,服务器只需要记录每个ip的访问频率,在单位时间内,如果访问频率超过一个阈值,便可以认为该ip地址可能是爬虫,于是可以返回一个验证码页面,要求用户填写验证码,如果是爬虫,则不能填写验证码,便可拒绝掉
这里提到两个反反爬虫策略:第一种就是延时提交时间,还有一种就是使用代理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。