Python urllib库如何添加headers过程解析


Posted in Python onOctober 05, 2020

对于请求一些网站,我们需要加上请求头才可以完成网页的抓取,不然会得到一些错误,无法返回抓取的网页。下面,介绍两种添加请求头的方法。

方法一:借助build_opener和addheaders完成

import urllib.request
url="http://www.meizitu.com"
#注意:在urllib 中headers是元组
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE")

opener=urllib.request.build_opener()
opener.addheaders=[headers]
data=opener.open(url)
print(data.read())

注意:此处的headers要写为一个元组类型才可以。写为字典类型的话会报错!

方法二、创建一个Request实例对象

# 案例1
import urllib.request
url="http://www.meizitu.com"
#注意:在urllib 中这种的headers 是需要是字典的
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE"}
req=urllib.request.Request(url=url,headers=headers)
file=urllib.request.urlopen(req)

#出现有些解码错误的话,加上“ignore”就可以啦
print(file.read().decode("utf-8",'ignore'))

注意:此处的headers要写为一个字典类型才可以。

创建一个Reques对象,把需要的headers,url,proxy 都放进去,或者在post 请求中还可以把编码过后的data 值放进去,再用urlopen 打开,就比较方便了。

另外,这种方法还可以用add_headers()来添加headers,代码如下:

import urllib.request
try:
  url="http://www.meizitu.com"
  req=urllib.request.Request(url=url)

  req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE")
  file=urllib.request.urlopen(req,timeout=10.1)

  print(file.read().decode("utf-8",'ignore'))
except Exception as e:
  print("时间超时",str(e))

总结:通过以上两种方法,可以完成请求头的相关参数设置,但是得注意headers是用字典类型来传入还是元组类型。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python中else语句块的使用技巧
Jun 16 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
python elasticsearch环境搭建详解
Sep 02 Python
python实现广度优先搜索过程解析
Oct 19 Python
Python 切分数组实例解析
Nov 07 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Python pip install之SSL异常处理操作
Sep 03 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 Python
Python3获取cookie常用三种方案
Oct 05 #Python
Python collections.deque双边队列原理详解
Oct 05 #Python
Python全局变量与global关键字常见错误解决方案
Oct 05 #Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 #Python
Python xmltodict模块安装及代码实例
Oct 05 #Python
Python pathlib模块使用方法及实例解析
Oct 05 #Python
Python fileinput模块如何逐行读取多个文件
Oct 05 #Python
You might like
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Django进阶之CSRF的解决
2018/08/01 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python getpass实现密文实例详解
2019/09/24 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
营销团队口号
2014/06/06 职场文书
赤壁观后感(2)
2015/06/15 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电