欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python爬虫(二)——requests库

程序员文章站 2022-07-14 11:19:14
...

requests库

公认的爬取网页最好的库

安装方法

用cmd打开控制台,输入

pip install requests

测试

抓取百度的网页代码。

打开IDLE输入一下代码

import requests
r = requests.get("http://www.baidu.com")
r.status_code
r.encoding = "UTF-8"
r.text

状态码为200即为成功,否则失败。
Python爬虫(二)——requests库

7个主要方法

requests.requests()

构造一个请求,支撑所有方法的基础。

requests.requests(method,url,**kewargs)
  • method:请求方式,对应get/put/post等七种
  • url:获取页面的url链接
  • **kwargs:13个控制访问参数。其中params的使用方法:Python爬虫(二)——requests库

**kwargs的13个参数

  • params:字典或字节序列,作为参数增加到url中
  • data:字典、字节序列或文件对象,作为Request的内容
  • json:JSON格式的数据,作为Request的内容
  • headers:字典,HTTP定制头
  • cookies:字典或CookieJar,Request中的cookie
  • auth:元组,支持HTTP认证功能
  • files:字典类型,传输文件
  • timeout:设定超时时间,单位为秒
  • proxies:字典类型,设定访问代理服务器,可以增加登录认证
  • allow_redirects:True/False,默认为True,重定向开关
  • stream:True/False,默认为True,获取内容立即下载开关
  • verify:True/False,默认为True,认证SSL证书开关
  • cert:本地SSL证书路径

requests.get()

获取HTML网页的主要方法,对应于与HTTP的GET方法。

r= requests.get(url)

构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象。

完整的格式:

requests.get(url,params = None,**kwargs)
  • url:拟获取页面的url链接
  • params:url中的额外参数,字典或字节流格式,可选
  • **kwargs:12个控制访问的参数,可选。requests中除了params的参数

get方法实际上使用了requests方法来封装。

Response对象

常用属性
  • r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败。
  • r.text HTTP响应内容的字符串形式。即url对应的页面内容。
  • r.encoding 从HTTP hear中猜测的响应内容编码方式。如果在返回的header中charset为空默认为ISO-8859-1。
  • r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)。
  • r.content HTTP响应内容的二进制形式。

requests.head()

获取HTML网页头信息的方法,对应于HTTP的HEAD方法。

requests.head(url,**kwargs)
  • url:获取页面的url链接
  • **kwargs:13个控制访问的参数

实例:

r = requests.head('http://httpbin.org/get')
r.headers
r.text

requests.post()

向HTML网页提交POST请求的方法,对应于HTTP的POST。

requests.post(url,data=None,json=None,**kwargs)
  • url:更新页面的url链接
  • data:字典、字节序列或文件,Request的内容
  • json:JSON格式的数据,Request的内容
  • **kwargs:11个控制访问的参数(除了requests中的data和json)

实例:

payload  = {'key1':'value1', 'key2':'value2'}
r = requests.post('http://httpbin.org/post', data = payload)
print(r.text)

结果:
Python爬虫(二)——requests库

requests.put()

向HTML网页提交PUT请求的方法,对应于HTTP的PUT。

requests.put(url,data= None,**kwargs)
  • url:更新页面的url链接
  • data:字典、字节序列或文件,Request的内容
  • **kwargs:12个控制访问的参数(除了requests中的data)

实例:

payload  = {'key1':'value1', 'key2':'value2'}
r = requests.put('http://httpbin.org/put', data = payload)
print(r.text)

结果:
Python爬虫(二)——requests库

requests.patch()

向HTML网页提交局部修改请求的方法,对应于HTTP的PATCH。

requests.patch(url,data= None,**kwargs)
  • url:更新页面的url链接
  • data:字典、字节序列或文件,Request的内容
  • **kwargs:12个控制访问的参数(除了requests中的data)

requests.delete()

向HTML页面提交删除请求的方法,对应于HTTP的DELETE。

requests.delete(url,**kwargs)
  • url:更新页面的url链接
  • **kwargs:13个控制访问的参数

通用代码框架

六种常见的异常

  • requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等。
  • requests.HTTPError HTTP错误异常
  • requests.URLRequired URL缺失异常
  • requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
  • requests.ConnectTimeout 连接远程服务器超时异常
  • requests.Timeout 请求URL超时,产生超市异常

r.raise_fo_status()

如果返回值不是200,产生异常requests.HTTPError

通用代码框架

爬取页面

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status() #如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return t.text
    except:
        return "产生异常"

最大的用处是使用户爬取网页变得更有效、更稳定、更可靠。

HTTP协议及Requests库方法

HTTP协议

Hypertext Transfer Protocol,超文本传输协议。是一个基于“请求与响应”模式、无状态的应用层协议。采用URL作为定位网络资源的格式(http:// host [:port] [path],host:合法的Internet主机或IP地址,port:端口号,path:请求资源的路径)。URL使通过HTTP协议存取资源的Internet路径。一个URL对应一个数据资源。

HTTP协议对资源的操作

  • GET 请求获取URL位置的资源。
  • HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息。
  • POST 请求向URL位置的资源后附加新的数据。
  • PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源。
  • PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容。
  • DELETE 请求i删除URL位置存储的资源。

小结

由于网络安全的限制,我们最常使用的是requests.get()方法,某些时候会使用requests.head()方法。

由于网络链接的问题我们需要一个通用代码框架。

相关标签: python爬虫 python