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爬取Coursera课程资源的详细过程
Nov 04 Python
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
Python探索之修改Python搜索路径
Oct 25 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 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
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
js实现密码强度检验
2017/01/15 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
python动态加载变量示例分享
2014/02/17 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
EJB实例的生命周期
2016/10/28 面试题
民族团结先进个人材料
2014/02/05 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
安全责任书范本
2014/04/15 职场文书
户外活动总结范文
2014/04/30 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
工伤事故证明
2014/10/20 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书