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使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
python微信公众号开发简单流程实现
Mar 09 Python
python求前n个阶乘的和实例
Apr 02 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
python字符串的index和find的区别详解
Jun 20 Python
详解python metaclass(元类)
Aug 13 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中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP模块化安装教程
2016/06/01 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
php图像验证码生成代码
2017/06/08 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
win与linux系统中python requests 安装
2016/12/04 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Python错误处理操作示例
2018/07/18 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
利用python汇总统计多张Excel
2020/09/22 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
大一新生军训时的自我评价分享
2013/12/05 职场文书
园林资料员岗位职责
2013/12/30 职场文书
运动会广播稿100字
2014/01/11 职场文书
活动邀请函范文
2014/01/19 职场文书
环保倡议书怎么写
2014/05/16 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL