restests库的应用

resrest库是 python实现的简单的应用的库,可以做爬虫使用

1、例程

import requests
response = requests.get("https://baidu.com")
print(response)                # <Response [200]>
print(type(response))          # <class 'requests.models.Response'>
print(response.status_code)    # 200

使用 resquests.get()发送get()请求,得到一个类的对象 response

2、各种请求方式

# 发送一个 HTTP POST 请求:
response = requests.post("http://httpbin.org/post",data = {'key':'value'})
response = requests.delete('http://httpbin.org/delete')    # 发送一个 HTTP delete 请求:
response = requests.head('http://httpbin.org/get')         # 发送一个 HTTP head 请求:
response = requests.options('http://httpbin.org/get')      # 发送一个 HTTP options 请求:

3、基本 GET请求

import requests
response = requests.get("http://httpbin.org/get?name=germey&age=22")
print(response.text)
import requests

data = {
    'name': 'germey',
    'age': 22
}
response = requests.get("http://httpbin.org/get", params=data)
print(response.text)

 两种方法都可以,添加 data 或者写在url上

resquesets.get(url)  得到的结果 response.text 为文本文件

3.1、获取二进制数据,可以爬取图片、视频等 

import requests

response = requests.get("https://github.com/favicon.ico")
with open('favicon.ico', 'wb') as f:
    f.write(response.content)
    f.close()

将爬取到的二进制数据,保存在 favicon.ico文件中,resquests.content 为获取到的内容

3.2、添加 headers标签

和 urllib.urlopen一样,可以添加一个 headers参数

import requests
headers = {
    'User-Agent' :'Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 70.0.3538.102Safari / 537.36Edge / 18.18362'
}
response = requests.get("https://www.zhihu.com/explore", headers=headers)
print(response.text)

4、response的属性

import requests
response = requests.get('http://www.baidu.com')
print(type(response.status_code), response.status_code)
print(type(response.headers), response.headers)
print(type(response.cookies), response.cookies)
print(type(response.url), response.url)
print(type(response.history), response.history)

5、上传文件

import requests
files = {'file': open('favicon.ico', 'rb')}
response = requests.post("http://httpbin.org/post", files=files)
print(response.text)

上传图片到 url网址上,然后接收端下载文件即可,用的是 post请求

6、获取cookie

import requests
response = requests.get("https://www.baidu.com")
print(response.cookies)
for key, value in response.cookies.items():
    print(key + '=' + value)

cookie是一个登录状态,下载之后,利用python访问的时候可以添加 cookie登录,不然有些网址会提示没有权限

模拟登录

import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)

建立一个 Session对象,保证添加 cookies的浏览器和再次访问的浏览器是同一个浏览器

就是说,如果是普通的方法,可能是模拟一个浏览器上添加了 cookie,再模拟另一个浏览器读取,的不要想要的验证效果

get( url/ cookie/set/xxx) 是添加 cookie 的方法  然后再 s.get 读取结果为 response

7、证书验证

一些网站没有官方的证书认证,浏览器访问会提示是否继续访问,但是python爬虫不会提示,访问会直接报错,可以添加参数 verify =False,屏蔽证书

import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

在 requests.get()方法中加入 verify =False即可,不过这样虽然可以运行,但是会有 warning 提示

也可以设置 uillib3.disable_warning() 关闭 warning提示

8、认证设置

比如说访问一些 htp网址或者其他需要账号密码登录,就需要直接输入

import requests
r = requests.get('http://120.27.34.24:9001', auth=('user', '123'))
print(r.status_code)

9、异常处理

import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException
try:
    response = requests.get("http://httpbin.org/get", timeout = 0.5)
    print(response.status_code)
except ReadTimeout:
    print('Timeout')
except ConnectionError:
    print('Connection error')
except RequestException:
    print('Error')

根据报错信息来判断是什么报错,然后添加 try expect 来处理异常

原文地址:https://www.cnblogs.com/yxlll/p/13571516.html