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用fork来创建子进程注意事项
Jul 03 Python
Python实现把数字转换成中文
Jun 29 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
python如何获取apk的packagename和activity
Jan 10 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
extjs render 用法介绍
2013/09/11 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
Python程序退出方式小结
2017/12/09 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
企业承诺书格式范文
2015/04/28 职场文书
谢师宴学生致辞
2015/07/27 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
数据设计之权限的实现
2022/08/05 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python