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

添加头部信息有两种方法

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

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

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

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

360翻译示例代码: 

1 import urllib.request 2 import chardet 3 import urllib.parse 4 import json 5  6 #请求url路径,这个是360翻译 7 url = 'https://fanyi.so.com/index/search?eng=0&validate=&ignore_trans=0&query=%E5%8E%86%E5%8F%B2%0A' 8 #这里只写了个浏览器标识 9 headers = {}10 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'11 #提交的请求主体信息12 data = {}13 data['eng'] = '0'  #1:英->汉  0:汉->英14 data['validate'] = ''15 data['ignore_trans'] = '0'16 while True:17     str = input("请输出要翻译的中文(输入q退出):") #要查询的内容18     if str == 'q':19         break20     else:21         data['query'] = str22 23 24     #将携带的数据转换成请求方法的对应类型25     reqdata = urllib.parse.urlencode(data).encode('utf-8')26     #把url、data、header封装成一个请求27     req = urllib.request.Request(url,reqdata,headers)28     #提交请求29     response = urllib.request.urlopen(req)30     #获取返回页面内容31     html = response.read()32     #将返回的页面进行解码,可以使用chardet.detect(html)查看页面编码33     # print(type(html)) 可以这样打印,判断出页面的类型是什么,好进行下一步的转码34     # print(isinstance(html,bytes))35     html = html.decode('ascii')36     #html为json格式,转换成字典类型37     html = json.loads(html)38     #提取出翻译的字段39     translation = html['data']['fanyi']40 41     print(translation)
(0)

相关推荐