2018-08-23 13:07:57

对于请求一些网站,我们需要加上请求头才可以完成网页的抓取,不然会得到一些错误,无法返回抓取的网页。下面,介绍两种添加请求头的方法。

方法一:借助build_opener和addheaders完成

  1. import urllib.request
  2. url="http://www.meizitu.com"
  3. #注意:在urllib 中headers是元组
  4. 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")
  5.  
  6. opener=urllib.request.build_opener()
  7. opener.addheaders=[headers]
  8. data=opener.open(url)
  9. print(data.read())

注意:此处的headers要写为一个元组类型才可以。写为字典类型的话会报错!

方法二、创建一个Request实例对象

  1. # 案例1
  2. import urllib.request
  3. url="http://www.meizitu.com"
  4. #注意:在urllib 中这种的headers 是需要是字典的
  5. 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"}
  6. req=urllib.request.Request(url=url,headers=headers)
  7. file=urllib.request.urlopen(req)
  8.  
  9. #出现有些解码错误的话,加上“ignore”就可以啦
  10. print(file.read().decode("utf-8",'ignore'))
  • 注意:此处的headers要写为一个字典类型才可以。
  • 创建一个Reques对象,把需要的headers,url,proxy 都放进去,或者在post 请求中还可以把编码过后的data 值放进去,再用urlopen 打开,就比较方便了。

另外,这种方法还可以用add_headers()来添加headers,代码如下:

  1. import urllib.request
  2. try:
  3. url="http://www.meizitu.com"
  4.  
  5. req=urllib.request.Request(url=url)
  6.  
  7. 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")
  8. file=urllib.request.urlopen(req,timeout=10.1)
  9.  
  10. print(file.read().decode("utf-8",'ignore'))
  11. except Exception as e:
  12. print("时间超时",str(e))

总结:通过以上两种方法,可以完成请求头的相关参数设置,但是得注意headers是用字典类型来传入还是元组类型。

01-urllib库添加headers的一般方法的更多相关文章

  1. urllib库使用方法

    这周打算把学过的内容重新总结一下,便于以后翻阅查找资料. urllib库是python的内置库,不需要单独下载.其主要分为四个模块: 1.urllib.request——请求模块 2.urllib.e ...

  2. 客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法

    客户端为了实现token认证,通过Jquery的ajaxSetup方法全局配置headers: 全局配置headers后会导致部分不需要token认证的请求变为options请求,导致跨域访问.报错信 ...

  3. Python爬虫学习==>第七章:urllib库的基本使用方法

    学习目的: urllib提供了url解析函数,所以需要学习正式步骤 Step1:什么是urllib urllib库是Python自带模块,是Python内置的HTTP请求库 包含4个模块: >& ...

  4. urllib库使用方法 3 get html

    import urllib.requestimport urllib.parse #https://www.baidu.com/s?ie=UTF-8&wd=中国#将上面的中国部分内容,可以动态 ...

  5. 爬虫之urllib库

    一.urllib库简介 简介 Urllib是Python内置的HTTP请求库.其主要作用就是可以通过代码模拟浏览器发送请求.它包含四个模块: urllib.request :请求模块 urllib.e ...

  6. Python3中Urllib库基本使用

    什么是Urllib? Python内置的HTTP请求库 urllib.request          请求模块 urllib.error              异常处理模块 urllib.par ...

  7. 爬虫学习--Urllib库基本使用 Day1

    一.Urllib库详解 1.什么是Urllib Python内置的HTTP请求库 urllib.request    请求模块(模拟实现传入网址访问) urllib.error             ...

  8. 爬虫(二):Urllib库详解

    什么是Urllib: python内置的HTTP请求库 urllib.request : 请求模块 urllib.error : 异常处理模块 urllib.parse: url解析模块 urllib ...

  9. python爬虫 - Urllib库及cookie的使用

    http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...

随机推荐

  1. TryParse用法示例

      int.Parse()是一种类型转换:表示将数字内容的字符串转为int类型.如果字符串为空,则抛出ArgumentNullException异常:如果字符串内容不是数字,则抛出FormatExce ...

  2. linq之多表连接

    1.左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals ...

  3. Java基础教程(17)--接口

      就像类一样,接口也是引用类型.它可以包含常量,方法签名,默认方法,静态方法和嵌套类型.在接口中,只有默认方法和静态方法有方法体.但不同于类,接口无法实例化,它只能被类实现或被其他接口继承. 一.定 ...

  4. CSS 高度(css height)

    DIV+CSS height高度知识教程篇 DIV CSS高度简介这里的CSS高度是指通过CSS来控制设置对象的高度.使用CSS属性单词height.单位可以使用PX,em等常用使用PX(像素)为ht ...

  5. egg.js-基于koa2的node.js入门

    一.Egg.JS 简介 Egg.JS是阿里开发的一套node.JS的框架,主要以下几个特点: Egg 的插件机制有很高的可扩展性,一个插件只做一件事,Egg 通过框架聚合这些插件,并根据自己的业务场景 ...

  6. css之背景(background)家族

    背景(background)是css中很重要的一部分,也是css的基础知道之一,现在来回顾css2中5个属性与css3中新增的3个属性和2个功能. CSS2_背景(background)前传 家族成员 ...

  7. JavaScript 面向对象的程序设计

    面向对象(Object-oriented,OO)的语言有一个标志,那就是它们都有类的概念.而通过类可以创建任意多个具有相同属性和方法的对象.前面提到过,ECMAScript中没有类的概念,因此它的对象 ...

  8. 浏览器根对象document之字符串属性

    1.1 停止使用的属性 fgColor.linkColor.vlinkColor.alinkColor.bgColor. 1.2 文档地址 document.URL 与documentURI属性返回同 ...

  9. ANT DESIGN PRO 脚手架.... 懒人福音

    早上在用蚂蚁组件,看到一个红红的 PRO , 什么鬼,点了看. https://pro.ant.design/index-cn 一脸懵逼, 中台前端??? 预览再看: 后台管理的demo , 脚手架  ...

  10. Android手势密码实现

    图 二.实现思路: 1. 正上方的提示区域,用一个类(LockIndicator.java)来实现,自定义view来绘制9个提示图标: 2. 手势密码绘制区域,用一个类(GestureContentV ...