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在windows下实现备份程序实例
Jul 04 Python
python rsa 加密解密
Mar 20 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Apache部署Django项目图文详解
Jul 30 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
Python3如何在服务器打印资产信息
Aug 27 Python
python实现三壶谜题的示例详解
Nov 02 Python
python模块内置属性概念及实例
Feb 18 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
Pytorch 如何实现常用正则化
May 27 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/02/27 无线电
php不用正则采集速度探究总结
2008/03/24 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
jQuery select的操作实现代码
2009/05/06 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
jQuery无冲突模式详解
2019/01/17 jQuery
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
Python threading多线程编程实例
2014/09/18 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
Python实现扫码工具的示例代码
2020/10/09 Python
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
项目建议书
2015/02/04 职场文书
观看建国大业观后感
2015/06/01 职场文书
歼十出击观后感
2015/06/11 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android