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求素数示例分享
Feb 16 Python
分享6个隐藏的python功能
Dec 07 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
python移位运算的实现
Jul 15 Python
Django基础知识 web框架的本质详解
Jul 18 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Django框架表单操作实例分析
Nov 04 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
python中os包的用法
Jun 01 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/01 无线电
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
用Python读取几十万行文本数据
2018/12/24 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
Django组件content-type使用方法详解
2019/07/19 Python
详解python with 上下文管理器
2020/09/02 Python
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
工程招投标邀请书
2014/01/30 职场文书
创业计划书模版
2014/02/05 职场文书
绿色学校实施方案
2014/03/31 职场文书
残疾人小组计划书
2014/04/27 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
学生检讨书范文
2015/01/27 职场文书
2015年教师节活动总结
2015/03/20 职场文书