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 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python多进程控制学习小结
Oct 31 Python
详解python中index()、find()方法
Aug 29 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
Python内置函数property()如何使用
Sep 01 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 Python
如何基于python实现单目三维重建详解
Jun 25 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
PHP 和 HTML
2006/10/09 PHP
PHP 读取文件的正确方法
2009/04/29 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
python求pi的方法
2014/10/08 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python3调用R的示例代码
2018/02/23 Python
Django 开发环境配置过程详解
2019/07/18 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
介绍一下Linux文件的记录形式
2013/09/29 面试题
软件测试笔试题
2012/10/25 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
灰雀教学反思
2014/04/28 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
2015年财政所工作总结
2015/04/25 职场文书
不同意离婚代理词
2015/05/23 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书