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 import自定义模块方法
Feb 12 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
使用Flask集成bootstrap的方法
Jul 24 Python
详解python while 函数及while和for的区别
Sep 07 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
详解Django中异步任务之django-celery
Nov 05 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
python解包概念及实例
Feb 17 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
教你怎么用python实现字符串转日期
May 24 Python
pytorch 如何使用batch训练lstm网络
May 28 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扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
php之readdir函数用法实例
2014/11/13 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
javascript调试说明
2010/06/07 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python适合做数据挖掘吗
2020/06/16 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
如何教少儿学习Python编程
2020/07/10 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
好的自荐信的要求
2013/10/30 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2014年大学生工作总结
2014/11/20 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android