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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
利用ctypes提高Python的执行速度
Sep 09 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
python 除法保留两位小数点的方法
Jul 16 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
Python中threading库实现线程锁与释放锁
May 17 Python
使用tensorflow 实现反向传播求导
May 26 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 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
php单例模式的简单实现方法
2016/06/10 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
python通过smpt发送邮件的方法
2015/04/30 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
网上开商店的创业计划书
2014/01/19 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
库房保管员岗位职责
2014/04/07 职场文书
记账会计岗位职责
2014/06/16 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
违纪开除通知书
2015/04/25 职场文书
最感人的道歉情书
2015/05/12 职场文书
企业党建工作总结2015
2015/05/26 职场文书
公司年会开场白
2015/06/01 职场文书
统招统分证明
2015/06/23 职场文书
2016教师节问候语
2015/11/10 职场文书