添加头部信息有两种方法

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. POJ-2018 Best Cow Fences 二分

    题意:找到一个连续区间,区间的长度至少大于f,现在要求这个区间的平均值最大. 题解: 二分找答案. 每次对于2分的mid值, 都把原来的区间减去mid, 然后找到一长度至少为f的区间, 他们的区间和& ...

  2. codeforces 509 D. Restoring Numbers(数学+构造)

    题目链接:http://codeforces.com/problemset/problem/509/D 题意:题目给出公式w[i][j]= (a[i] + b[j])% k; 给出w,要求是否存在这样 ...

  3. 分析一次double强转float的翻车原因

    背景 人逢喜事精神爽,总算熬到下班撩~~ 正准备和同事打个招呼回家,被同事拖住问了.

  4. Java之多线程(一)

    一,前言 ​ 今天总结一些关于线程方面的知识,说到线程可谓是无人不知,毕竟这东西不管是在工作开发中,还是实际生活中都时时存在着.关于线程方面的内容非常多,从简单的单线程,多线程,线程安全以及到高并发等 ...

  5. 【Offer】[28] 【对称的二叉树】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现一个函数,用来判断一-棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的.  牛客网刷题地址 思路分析 利用前序 ...

  6. 【Offer】[4] 【二维数组中的查找】

    题目描述 思路分析 Java代码 代码链接 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  7. Java连载30-方法重载、方法递归

    一.方法重载 1.又被称为overload 2.方法重载使用场景 功能类似的时候,尽可能仍方法名相同(但是功能不同或者不相似的时候,方法名尽量不同) 3.什么条件满足之后,可以构成方法重载 (1)在同 ...

  8. 【第十四篇】easyui datagrid导出excel

    <a class="btn btn-app" onclick="exportExcel()"><i class="fa fa-edi ...

  9. 微信小程序点击控制元素的显示与隐藏

    微信小程序点击控制元素的显示与隐藏 首先我们先来看一下单个点击效果 我们来看一下wxml中的代码: <view class="conten"> <view cla ...

  10. OPC-System.Runtime.InteropServices.COMException:“Error HRESULT E_FAIL has been returned from a call to a COM component.”

    Error HRESULT E_FAIL has been returned from a call to a COM component的错误提示,还是因为OPC配置,这次是红框中标签定义错误,应该 ...