Requests库

Requests库

概述

简介:Requests库是Python的第三方库。  Requests库官网:http://www.python-requests.org 

Requests库的安装

  1. 以管理身份运行command控制台。
  2. pip install requests

     

Requests库的2个重要对象

1.Response:

Response对象包含爬虫返回的内容。r--->变量 

Response对象的属性
属性 说明
r.status_code HTTP请求的返回状态,200表示连接成功,404表示连接失败
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式【如果header中不存在charset,则认为编码为ISO-8859-1】
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式
Requests库的异常
异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败,拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedireets 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
r.raise_for_status() 如果不是200,产生异常requests.HTTPError

2.Requests方法:

Requests库的7各主要方法
方法 说明  
requests.request() 构造一个请求,支撑以下各方法的基础方法。  
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET requests.get(url, params=None, **kwargs)
requests.head() 获取HTML网页头信息的方法,对应HTTP的HEAD requests.head(url, **kwargs)
requests.post()

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

requests.post(url, data = None, json =None, **kwargs)

requests.put()

向HTML网页提交PUT请求的方法,对应HTTP的PUT requests.put(url, data = None,  **kwargs)
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH requests.patch(url, data = None,  **kwargs )
requests.delete()

向HTML网页提交删除请求,对应于HTTP的DELETE

requests.delete(url, **kwargs)

requests.request(method, url, **kwargs)  method:请求方式,对应get/put等7种。  url:拟获取网页的url链接

**kwargs:控制访问的参数,均为可选项

1.params:字典或字节序列,作为参数增加到url中

kv = {'key1': 'value1', 'key2': 'value2'}
r = requests.request('GET', 'http://python123.io/ws', params=kv)
print(r.url)
http://python123.io/ws?key1=value1&key2=value2 

2.data:字典、字节序列或文件对象,作为Request的内容

kv = {'key1': 'value1', 'key2': 'value2'}
r = requests.request('POST', 'http://python123.io/ws', data=kv)
body = '主体内容'
r = requests.request('POST', 'http://python123.io/ws', data=body)

3.json:JSON格式的数据,作为Request的内容

kv = {'key1': 'value1'}
r = requests.request('POST', 'http://python123.io/ws', json= kv)

4,headers:字典,HTTP定制头

hd = {'user-agent': 'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers = hd)

5.cookies:字典或CookieJar, Request中的cookie

6.auth:元组,支持HTTP认证功能

7.files:字典类型,传输文件

fs = {'file':open('data.xls', 'rb')}
r = requests.request('POST', 'http//python123.io/ws', files = fs)

8.timeout:设定超时时间,秒为单位

r = requests.request('GET', 'http://www.baidu.com', timeout=10)

9.proxies:字典类型,设定访问代理服务器,可以增加登录认证

pxs = {'http': 'http://user:pass@10.10.10.1:1234'
           'https': 'https://10.10.10.1:4321'     } 
r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)   

10.allow_redirects:True/False,默认为True,重定向开关

11.stream:True/False,默认为True,获取内容立即下载开关

12.verify:True/False,默认为True,认证SSL证书开关

13.cert:本地SSL证书路径

 

 

复制代码
import requests

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_atatus() #如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"
if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLText(url))
爬取网页的通用代码框架
复制代码

 

协议

1.HTTP协议:

https://www.runoob.com/http/http-tutorial.html

HTTP,Hypertext Transfer Protocol,超文本传输协议。

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。

HTTP协议采用URL作为定位网络资源的标识。

URL格式 http://host[:port][path]  host:合法的Internet主机域名或IP地址  port:端口号,默认端口80  path:请求资源的路径

URL是通过HTTP协议存取资源的Internet路径,URL对应一个数据资源。

 

2.Robots协议:

https://baike.baidu.com/item/robots%E5%8D%8F%E8%AE%AE/2483797?fr=aladdin

网络爬虫排除标准

作用:网络告知网络爬虫哪些页面可以抓取,哪些不行。

形式:在网络根目录下的robots.txt文件。

使用:

网络爬虫:自动或人工识别robots.txt,再进行内容爬取

约束性:Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险。

 

 

 

posted @   魔九念  阅读(483)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示