添加头部信息有两种方法

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. 【CF1137C】 Museums Tour 拆点+缩点

    https://codeforc.es/contest/1137/problem/C # 题意 给你n个点,每个点有k天博物馆开放时间的安排表. 有m条单向道路,走过一条边需要一个晚上,经过后就是第二 ...

  2. 2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)

    2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest) Problem A. M ...

  3. B. Tea Queue codeforces Round.37.div2 队列

    B. Tea Queue time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. c语言实现数组的排序

      本文章只对选择排序和冒泡排序进行介绍 选择排序实际上是从0到length-1,选择某个元素与其他的元素进行大小比较,如果大于就交换,其他情况不做操作,如图: 冒泡排序实际上是先选择某个元素,然后从 ...

  5. Linux中设置静态ip地址

    电脑64位,安装的是VMware12,虚拟机名称E3-dubbo-register 1.查看主机的IP地址 win+R-->cmd-->ipconfig   (记住,后面要用) 2.将该虚 ...

  6. android 滚动时间选择器

    一.概述 滚动时间选择现在貌似很常用,所以就总结一下,显示效果一般般 , 做个参考吧! 以上就是效果图,可以滚动选择 日期时间, 由于是在 5.0系统运行的,貌似5.0系统做了什么变动,下面的 &qu ...

  7. Java之BigDecimal详解

    一.BigDecimal概述 ​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数,但在实 ...

  8. 学生管理系统——ArrayList集合

    此学生管理系统利用了集合ArrayList实现了对学生的增删改查:利用数组中的方法实现分数排序:运用String类的equals实现登录功能的字符串比较. 管理员类: package data; pu ...

  9. Day 14 查找文件 find

    find 查找方式 1.按照名称进行查找 [root@oldboyedu ~]# find ./ -name "*eth0" 2.按照名称查找(不区分大小写) [root@oldb ...

  10. js vue 页面添加水印

    vue 微信页面添加水印 this.$nextTick(function() {                                   watermark({ watermark_txt ...