python爬虫添加请求头和请求主体
添加头部信息有两种方法
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爬虫添加请求头和请求主体的更多相关文章
- HTTP 请求头与请求体 - 某熊的全栈之路 - SegmentFault
本文从属于笔者的HTTP 理解与实践系列文章,对于HTTP的学习主要包含HTTP 基础.HTTP 请求头与请求体.HTTP 响应头与状态码.HTTP 缓存这四个部分,而对于HTTP相关的扩展与引申,我 ...
- 【转载】HTTP 请求头与请求体
原文地址: https://segmentfault.com/a/1190000006689767 HTTP Request HTTP 的请求报文分为三个部分 请求行.请求头和请求体,格式如图:一个典 ...
- request获取请求头和请求数据
package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...
- HttpServletRequest对象,请求行、请求头、请求体
HttpServletRequest 公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象.对 ...
- 【Python爬虫技巧】快速格式化请求头Request Headers
你好,我是 @马哥python说 . 我们在写爬虫时,经常遇到这种问题,从目标网站把请求头复制下来,粘贴到爬虫代码里,需要一点一点修改格式,因为复制的是字符串string格式,请求头需要用字典dict ...
- Python爬虫:常用的浏览器请求头User-Agent(转)
原文地址:https://blog.csdn.net/mouday/article/details/80182397 user_agent = [ "Mozilla/5.0 (Macinto ...
- Python爬虫(二)——发送请求
1. requests库介绍 在python中有许多支持发送的库.比如:urlib.requests.selenium.aiohttp--等.但我们当前最常用的还是requests库,这个库是基于 ...
- Python爬虫《爬取get请求的页面数据》
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- python 爬虫 urllib模块 发起post请求
urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某 ...
随机推荐
- cogs249 最长公共子串(后缀数组 二分答案
http://cogs.pro:8080/cogs/problem/problem.php?pid=pxXNxQVqP 题意:给m个单词,让求最长公共子串的长度. 思路:先把所有单词合并成一个串(假设 ...
- codeforces 454 D. Little Pony and Harmony Chest(状压dp)
题目链接:http://codeforces.com/contest/454/problem/D 题意:给定一个序列a, 求一序列b,要求∑|ai−bi|最小.并且b中任意两数的最大公约数为1. 题解 ...
- HTML连载35-背景图片的练习、精灵图
一.背景图片练习 解释:这个例子需要注意的是,我们背景图片嵌套到另一个图片之中.我们设计的注意点在于,怎么定位到我们想定位到的地方. 总结:背景图片就是一块一块的,我们想把块的位置定位好(一般就是宽和 ...
- mybatis转义
SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE 在执行 ...
- git之坑2
今天遇到的问题,git拉代码拉不了了,开发同事将他的家目录下的.ssh目录权限给改成777 造成pull push代码报错. 截图如下: 原因是哪个哥们把根目录的权限全部改为了777 解决方法,将他的 ...
- 033 模块4-PyInstaller库的使用
目录 一.PyInstaller库基本介绍 1.1 PyInstaller库概述 1.2 pip的使用 1.3 pip install pyinstaller (cmd命令行) 二.PyInstall ...
- MyBatis中#{}和${}的区别详解
首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util.M ...
- SqlServer DbHelper
/// <summary> /// 数据库通用操作类 /// </summary> public abstract class DbHelper { #region " ...
- JSP学习笔记(6)—— 自定义MVC框架
仿照SpringMVC,实现一个轻量级MVC框架,知识涉及到了反射机制.注解的使用和一些第三方工具包的使用 思路 主要的总体流程如下图所示 和之前一样,我们定义了一个DispatchServlet,用 ...
- SAP压缩excel并发送mail案例
"SAP压缩附件 REPORT ZMMR0033_DEL7 . TYPES: BEGIN OF bin_file, name TYPE string, ...