python学习记录-requests库

requests库

 

方法 说明
requests.request() 构造一个请求,支撑一下各个方法的基础方法
requests.get() 获取html网页的主要方法,对于http的GET
requests.head() 获取html网页头信息的方法,对应http的head
requests.post() 向html网页提交POST请求的方法,对应http的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()  向HTML页面提交删除请求,对应于HTTP的DELETE

 

requests.get()

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

如果出现418错误,则说明该网站有反爬机制,可以添加headers参数重新请求。

 

 

 

 

 

 

 

 

 

 

 

 

import requests
import re

#爬取豆瓣影评前100的电影名称
def douban_top100():
    top100 = []
    a = []
    headers = {
        "User-Agent": "***** "}
    for i in range(4):
        url = 'https://movie.douban.com/top250?start=%i&filter=' % (i * 25)
        res = requests.get(url, headers=headers)
        code = res.status_code

        if code != 200:
            print("网络错误,", code)
        else:
            con = res.content  # 网站设置防爬取,应添加headers信息。
            con = con.decode("utf-8")
            title = re.compile(r"img width=\"100\" alt=\"(.+?)\"")
            if title is not a:
                top100 += title.findall(con)
            else:
                print("错误!爬取信息为空。")

    if len(top100) != 100:
        print("爬取信息数量错误!")
    else:
        for rate, title in enumerate(top100, start=1):
            print(rate, title)


if __name__ == "__main__":
    douban_top100()

response的对象

属性 说明
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

requests库的异常

异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired UR缺失异常
requests.TooMangRedirects 超过最大重定向数,产生重定向异常
requests.ConnectTimout 连接远程服务器异常
requests.Timeout 请求URL超时,产生超时异常
r.raise_for_status() 如果不是200,产生异常request.HTTPRError

 

request方法

 

requests.request(method,url,**kwargs)

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

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

kv = {"key1": "value1", "key2": "value2"}
r = requests.request('GET', "http://www.baidu.com", params=kv)
print("r.url")

(2)data:字典、字节序列或文件对象,作为Request的对象

kv = {"key1": "value1", "key2": "value2"}
r = requests.request('GET', "http://www.baidu.com", data=kv)
body = "主题内容"
r = reqests.request('POST', "http://www.baidu.com", data=body)

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

kv = {"key1": "value1"}
r = requests.request('POST', "http://www.baidu.com", json=kv)

(4)headers:字典,HTTP定制头

hd = {'user-agent':'chrome/10'}
r = requests.request('POST', "http://www.baidu.com", headers=hd)

(5)cookies:字典或CookieJar,Request中的cookie
(6)auth:元组,支持HTTP认证功能
(7)files:字典类型,传输文件

fs = {'file':open('data.xls','rb')}
r = requests.request('POST', "https://www.baidu.com", files=fs)

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

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

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

(10)allow_redirects:True/False,默认为Ture,重定向开关
(11)stream:True/False,默认为True,获取内容立即下载开关
(12)verigy:True/False,默认为True,认证SSL证书开关
(13)cert:本地SSL证书路径

 

posted @ 2021-07-16 14:34  一笔一划82  阅读(104)  评论(0)    收藏  举报