Advertisement

python网络爬虫1——Requests库 获取页面

阅读量:

目录

第一章 Requests库

1.Requests库的安装

2.Requests库最常用的方法:requests.get()

3.Response对象的属性

4.爬取网页的通用代码框架

(1)Requests库的异常

(2)爬取网页的通用代码框架

5.Requests库的常用方法

(1)HTTP协议

(2)Requests库的7个主要方法

(3)核心方法:requests.request( method, url, **kwargs)

(4)**kwargs参数


第一章 Requests库

相关介绍:http://www.python-requests.org

1.Requests库的安装

cmd中,运行命令:pip install requests

2.Requests库最常用的方法:requests.get()

r = requests.get(url) 获得网页

使用requests.get(url)生成了一个Request实体,并向服务器发送了资源请求;该实体将提供包含服务器资源的响应内容给变量r

完整函数:requests.get( url, params = None, **kwargs),后面两个参数可选

3.Response对象的属性

r.status_code HTTP请求的返回状态,200成功,其他失败
r.text url对应的页面内容,以字符串形式呈现
r.encoding 网页的编码方式,从网页header中猜测出来的编码方式
r.apparent_encoding 备用编码方式,从网页内容中分析出来
r.content url对应的页面内容,以二进制形式呈现

注解:r.encoding表示在Header中如果没有charset字段时,默认采用ISO-8859-1编码方式;然而该编码无法正确解析中文字符。

4.爬取网页的通用代码框架

(1)Requests库的异常

requests.ConnectionError 网络连接错误异常
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URl超时,产生超时异常

Response对象提供了一个判断异常的方法:

r.raise_for_status() 被触发当其status属性为无效状态码时。
或者:
调用r.raise_for_status() 会导致抛出requests.HTTPError异常。
或者:
r.raise_for_status() 在检测到无效状态码(如非200)时会被触发。
或者:
当检测到无效状态码(如非200)时,会触发调用r.raise_for_status() 并引发requests.HTTPError异常。
或者:
检测到无效状态码(如非200)时会触发调用并引发错误。

(2)爬取网页的通用代码框架

复制代码
 import requests

    
  
    
 def getHTMLText(url):
    
      try:
    
       kv = {'user-agent':'Mozilla/5.0'}
    
       r = requests.get(url, timeout = 30, headers = kv)   #获取页面,自定义头部(浏览器头部)
    
       r.raise_for_status()      #若不是200,则抛出错误,返回“产生异常”
    
       r.encoding = r.apparent_encoding   
    
       return r.text   
    
  
    
      except:
    
       return '产生异常'
    
  
    
 if __name__ == '__main__':
    
      url = 'http://www.baidu.com'
    
      print(getHTMLText(url))

5.Requests库的常用方法

(1)HTTP协议

超文本传输协议,基于“请求与响应”模式的协议

HTTP协议对资源有6种操作方法:

GET 请求获取URL位置的资源
HEAD 请求获得资源的头部信息
POST 向URL位置的资源后面附加新的数据
PUT 向URL位置存储一个资源,覆盖原资源
PATCH 局部更新URL位置的资源,部分改变原资源
DELETE 删除URL位置存储的资源

(2)Requests库的7个主要方法

使用requests库中的request方法进行网络请求(method参数)。
获取目标地址对应的资源信息(url地址)。
执行 HEAD 请求(url地址)。
提交 POST 方法的数据包至指定路径(url地址)。
执行 PUT 方法至指定路径(url地址)。
进行 PATCH 请求至指定路径(data包可选)。
删除指定路径下的所有资源(url地址)。

此处为注释:Requests库仅支持requests.request()这一项功能;而其他功能则基于这一核心功能进行扩展实现。

**(3)核心方法:requests.request( method, url, kwargs)

  • method即为HTTP协议中的请求方法之一,在此系统中支持GET、HEAD、POST、PUT、PATCH、DELETE及OPTIONS七种常见方式。
    • url则指向拟获取页面的URL地址。
    • kwargs用于管理访问参数共计13个,并均为可选设置。

**(4)kwargs参数

  • params:字典或字节序列,作为参数增加到url中
复制代码
 import requests

    
  
    
 dic = {'name': 'TH', 'age' : 26}
    
 r = requests.request('GET', 'http://www.baidu.com', params = dic)
    
 print(r.url)

结果如下:将字典dic中的信息增加到url后

复制代码
    http://www.baidu.com/?name=TH&age=26

data:表示一个字典、一个字节序列或一个文件对象,并将其作为Request内容的一部分提交给服务器。
该字段存储着不同类型的数值数据,并用于后续的数据处理流程。
该字段接收并处理来自不同设备的二进制数据流,并将其转换为可解析的形式。

复制代码
 import requests

    
  
    
 dic = {'key1': 'value1', 'key2' : 'value2'}
    
 r = requests.request('POST', 'http://www.baidu.com', data = dic)
    
  
    
 body = '主体内容'
    
 r = requests.request('POST', 'http://www.baidu.com', data = body)
  • json:JSON格式的数据,作为Request的内容
复制代码
 kv = {'key1': 'value1'}

    
 r = requests.request('POST', 'http://python123.io/ws', json = kv)
  • headers:字典,HTTP定制头
复制代码
 hd = {'user-agent' : 'Chrome/10'}

    
 r = requests.request('POST', 'http://python123.io/ws', headers = hd)
  • cookies表示为字典或CookieJar,并从HTTP协议中提取cookie信息
  • auth是元组类型
  • files定义为字典类型的变量
复制代码
 fs = {'file':open('data.xls', 'rb')}

    
 r = requests.request('POST', 'http://python123.io/ws' , files = fs)
  • timeout:设置超时时间参数(单位为秒)
  • proxies:配置访问代理服务器(以字典形式表示),支持增强身份认证功能
  • allow_redirects:指定布尔值(True/False),默认启用状态(是否执行重定向操作)
  • stream:指定布尔值(True/False),默认设置为立即开始下载内容
  • verify:指定布尔值(True/False),默认启用状态(是否验证SSL证书)
  • cert:存储本地SSL证书路径信息

全部评论 (0)

还没有任何评论哟~