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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
谈一谈基于python的面向对象编程基础
May 21 Python
浅析python内置模块collections
Nov 15 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
python脚本第一行如何写
Aug 30 Python
Elasticsearch 数据类型及管理
Apr 19 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
第十节--抽象方法和抽象类
2006/11/16 PHP
解析yii数据库的增删查改
2013/06/20 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
python 求10个数的平均数实例
2019/12/16 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
幼儿园教师节活动方案
2014/02/02 职场文书
企业军训感言
2014/02/08 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
晚会开幕词
2015/01/28 职场文书
小学数学教师研修日志
2015/11/13 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
Golang 并发编程 SingleFlight模式
2022/04/26 Golang
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python