python爬虫添加请求头和请求主体

添加头部信息有两种方法

1.通过添加urllib.request.Request中的headers参数

 #先把要用到的信息放到一个字典中
headers = {}
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) .......'
headers['......'] = '........' #提交的主体信息,可以使用windows的浏览器找出来,以字典的形式写出来
data = {}
data['eng'] = '' #1:英->汉 0:汉->英
data['validate'] = ''
data['ignore_trans'] = '' #将携带的数据转换成请求方法的对应类型
reqdata = urllib.parse.urlencode(data).encode('utf-8') #生成一个请求报文,这里的url和data需要提前给定
req = urllib.request.Request(url,reqdata,headers) #使用这个报文去请求网页,这时请求的报文中就带有浏览器标识了
html = urllib.request.urlopen(req).read()

2.通过urllib.request.Request的add_header方法添加

 #生成请求报文,这里先不加入header参数
req = urllib.request.Request(url,reqdata) #通过返回的请求对象添加header头,这里是个元祖,不是字典
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64)') #这时再去请求就是带有浏览器标识的报文了
html = urllib.request.urlopen(req).read()

360翻译示例代码: 

 import urllib.request
import chardet
import urllib.parse
import json #请求url路径,这个是360翻译
url = 'https://fanyi.so.com/index/search?eng=0&validate=&ignore_trans=0&query=%E5%8E%86%E5%8F%B2%0A'
#这里只写了个浏览器标识
headers = {}
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
#提交的请求主体信息
data = {}
data['eng'] = '' #1:英->汉 0:汉->英
data['validate'] = ''
data['ignore_trans'] = ''
while True:
str = input("请输出要翻译的中文(输入q退出):") #要查询的内容
if str == 'q':
break
else:
data['query'] = str #将携带的数据转换成请求方法的对应类型
reqdata = urllib.parse.urlencode(data).encode('utf-8')
#把url、data、header封装成一个请求
req = urllib.request.Request(url,reqdata,headers)
#提交请求
response = urllib.request.urlopen(req)
#获取返回页面内容
html = response.read()
#将返回的页面进行解码,可以使用chardet.detect(html)查看页面编码
# print(type(html)) 可以这样打印,判断出页面的类型是什么,好进行下一步的转码
# print(isinstance(html,bytes))
html = html.decode('ascii')
#html为json格式,转换成字典类型
html = json.loads(html)
#提取出翻译的字段
translation = html['data']['fanyi'] print(translation)
上一篇:Win10如何开启IIS服务以及如何打开IIS管理器


下一篇:运行inetmgr提示“找不到文件”无法打开IIS管理器的解决办法