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)