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中类的定义、继承及使用对象实例详解
Apr 30 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
PyTorch预训练的实现
Sep 18 Python
django中media媒体路径设置的步骤
Nov 15 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
变长双向rnn的正确使用姿势教学
May 31 Python
python 网络编程要点总结
Jun 18 Python
Python借助with语句实现代码段只执行有限次
Mar 23 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的Socket通信之UDP通信实例
2015/07/02 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
python从入门到精通(DAY 2)
2015/12/20 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python基于百度云文字识别API
2018/12/13 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python列表切片操作实例总结
2019/02/19 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
作风建设年度心得体会
2014/10/29 职场文书
人口与计划生育责任书
2015/05/09 职场文书
大学团日活动总结书
2015/05/11 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers