Python爬虫学习笔记:requests库常用方法总结

requests是一个功能强大,使用方便的网络请求库.
本文主要介绍requests库入门水平的常用方法

1.使用requests库发送请求

最基本的get请求发送方式如下:

import requests
r = requests.get(url)

返回的r为一个 Response对象

requests库主要方法如下表所示:
Python爬虫学习笔记:requests库常用方法总结_第1张图片

get方法的常用可选参数有

  • params
    为 URL 的查询字符串传递某种数据

    例:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
#http://httpbin.org/get?key2=value2&key1=value1
  • headers
    定制请求头

如果不定制请求头,一些网站会拒绝爬虫访问
例:

url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
  • timeout
    设定超时时间,单位为秒
    例:
r = requests.get(url, timeout=10)

如果超时,会抛出异常

2.Response对象的属性

  • text
    url对应的页面内容

  • status_code
    http请求的状态码,200表示链接成功
    其他状态码表示的含义请自行百度

raise_for_status()方法可以检测返回的状态码是否为200
如果不是200,则抛出异常

r.raise_for_status()

若状态码为404:

Traceback (most recent call last):
  File "requests/models.py", line 832, in raise_for_status
    raise http_error
requests.exceptions.HTTPError: 404 Client Error

若状态码为200

r.raise_for_status()
None
  • encoding
    从header中得到的编码方式
    若header中没有charset,默认编码为 ISO-8859-1

  • apparent_encoding
    从内容分析得到的编码方式

  • content
    http响应内容的二进制形式
    Requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。
    例如,以请求返回的二进制数据创建一张图片:

from PIL import Image
from io import BytesIO

 i = Image.open(BytesIO(r.content))
  • headers
    查看以一个 Python 字典形式展示的服务器响应头
    例:
r.headers
{
    'content-encoding': 'gzip',
    'transfer-encoding': 'chunked',
    'connection': 'close',
    'server': 'nginx/1.0.4',
    'x-runtime': '148ms',
    'etag': '"e1ca502697e5c9317743dc078f67693f"',
    'content-type': 'application/json'
}

3.基本爬虫代码

import requests

url = r''#目标地址
try:
    r = requests.get(url, headers={'User-Agent':'Mozilla/5.0'}, timeout=20)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text)
except:
    print('产生异常')

这里也可以将try后面的内容封装作为函数调用

4.一些更好的教程及文档地址

Python网络爬虫与信息提取视频教程:
https://www.icourse163.org/course/BIT-1001870001 #说实话看这个视频应该快进起码1.5倍
Requests 2.18.1 官方文档:
http://cn.python-requests.org/zh_CN/latest/ #挺好的,擅长啃文档的直接看这个就行了

你可能感兴趣的:(爬虫)