添加头部信息有两种方法

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)

python爬虫添加请求头和请求主体的更多相关文章

  1. HTTP 请求头与请求体 - 某熊的全栈之路 - SegmentFault

    本文从属于笔者的HTTP 理解与实践系列文章,对于HTTP的学习主要包含HTTP 基础.HTTP 请求头与请求体.HTTP 响应头与状态码.HTTP 缓存这四个部分,而对于HTTP相关的扩展与引申,我 ...

  2. 【转载】HTTP 请求头与请求体

    原文地址: https://segmentfault.com/a/1190000006689767 HTTP Request HTTP 的请求报文分为三个部分 请求行.请求头和请求体,格式如图:一个典 ...

  3. request获取请求头和请求数据

    package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...

  4. HttpServletRequest对象,请求行、请求头、请求体

    HttpServletRequest 公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象.对 ...

  5. 【Python爬虫技巧】快速格式化请求头Request Headers

    你好,我是 @马哥python说 . 我们在写爬虫时,经常遇到这种问题,从目标网站把请求头复制下来,粘贴到爬虫代码里,需要一点一点修改格式,因为复制的是字符串string格式,请求头需要用字典dict ...

  6. Python爬虫:常用的浏览器请求头User-Agent(转)

    原文地址:https://blog.csdn.net/mouday/article/details/80182397 user_agent = [ "Mozilla/5.0 (Macinto ...

  7. Python爬虫(二)——发送请求

    1. requests库介绍 ​ 在python中有许多支持发送的库.比如:urlib.requests.selenium.aiohttp--等.但我们当前最常用的还是requests库,这个库是基于 ...

  8. Python爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  9. python 爬虫 urllib模块 发起post请求

    urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某 ...

随机推荐

  1. Sql Server中变的定义以及赋值的应用

    --申明变量declare @ad_begin datetimedeclare @fydl varchar(50)declare @userid varchar(50)declare @jdrbm v ...

  2. ICPC 2018 Asia Hanoi Regional Contest

    A. Amazing Adventures B. Bipartite Battle solved by rdc 135min sdcgvhgj 打表找出了规律,发现 sg 值只和点数和边数的奇偶性有关 ...

  3. hdu 5495 LCS(并查集)

    Problem Description You are given two sequence {a1,a2,...,an} and {b1,b2,...,bn}. Both sequences are ...

  4. 牛客暑假多校 F RIKKA with Line Graph

    题意: 现在有一副完全图, 将他转化成线图. 线图就是 把原来的图上的边都变成点, 然后如果原来的任意2条边存在公共点, 他们就会有一条边, 边权为原来的2条边的和. 最后求出线图中的任意2点的最短路 ...

  5. 微信小程序实现pdf,word等格式文件上传

    目前微信只支持从聊天记录里面获取文件 一.前言 目前微信提供了一个接口 wx.chooseMessageFile 它能让用户从聊天记录里面选择一个或者多个文件,然后返回它的一些信息,列入文件的path ...

  6. String对象为什么不可变

    转载:https://www.cnblogs.com/leskang/p/6110631.html 一.什么是不可变对象? As we all know, 在Java中, String类对象是不可变的 ...

  7. Python 为了提升性能,竟运用了共享经济

    大家或许知道,Python 为了提高内存的利用效率,采用了一套共用对象内存的分配策略. 例如,对于那些数值较小的数字对象([-5, 256]).布尔值对象.None 对象.较短的字符串对象(通常 是 ...

  8. FreeSql (九)删除数据

    删除是一个非常危险的操作,FreeSql对删除支持并不强大,仅支持了单表有条件的删除方法. 不想过多的介绍拉长删除数据的系列文章,删除数据的介绍仅此一篇. 若Where条件为空的时候执行方法,Free ...

  9. linux 常用压缩、解压命令

    .tar.gz     解压为          tar   -zxvf   xx.tar.gz    压缩为 tar -zcvf  target.tar.gz ./src_dir zip 解压为   ...

  10. 无法安装64位office,因为您的PC上有32位

    场景:安装visio2013时,突然报以下错误 解决方案: 1. 单击开始--所有程序--附件--运行,在运行输入“regedit“ 2. 弹出注册表编辑器窗口,选择HKEY_CLASSES_ROOT ...