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 流程控制实例代码
Sep 25 Python
python 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
python中的函数用法入门教程
Sep 02 Python
在Django的session中使用User对象的方法
Jul 23 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
Python实现读取并保存文件的类
May 11 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python找出因数与质因数的方法
Jul 25 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
详解Python3 中的字符串格式化语法
Jan 15 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 获取一个月第一天与最后一天的代码
2010/05/16 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
jQuery操作cookie
2016/08/08 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
python文件的md5加密方法
2016/04/06 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
对python模块中多个类的用法详解
2019/01/10 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
中层干部岗位职责
2013/12/18 职场文书
个人现实表现材料
2014/02/04 职场文书
材料加工工程求职信
2014/02/19 职场文书
《学会待客》教学反思
2014/02/22 职场文书
好人好事演讲稿
2014/09/01 职场文书
英文商务邀请函范文
2015/01/31 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang