python爬虫入门(一)- python中的requests库的基本用法

Python Requests库的基本用法

在Python中,requests是一个流行的第三方库,用于发送HTTP请求。它提供了简洁而强大的API,使得与网络进行交互变得非常容易。本文将详细介绍requests库的基本用法,并提供示例代码。

安装Requests库

首先,你需要安装requests库。在命令行中运行以下命令来安装:

pip install requests

发送GET请求

使用requests库发送GET请求非常简单。下面是一个基本的示例:

import requests

response = requests.get("https://www.fivcan.com")
print(response.status_code)  # 打印响应状态码
print(response.text)         # 打印响应内容

在上面的示例中,我们使用get方法发送了一个GET请求,并将响应保存在response变量中。我们可以通过status_code属性获取响应的状态码,通过text属性获取响应的内容。

发送带参数的GET请求

有时候,我们需要向服务器发送带有参数的GET请求。requests库允许我们通过params参数传递这些参数。下面是一个示例:

import requests

payload = {"key1": "value1", "key2": "value2"}
response = requests.get("https://www.fivcan.com", params=payload)
print(response.url)   # 打印完整的请求URL
print(response.text)  # 打印响应内容

在上面的示例中,我们使用params参数传递了一个字典payload,其中包含了需要发送的参数。requests库会自动将这些参数添加到请求URL中。

发送POST请求

与发送GET请求类似,使用requests库发送POST请求也非常简单。下面是一个基本的示例:

import requests

payload = {"key1": "value1", "key2": "value2"}
response = requests.post("https://www.fivcan.com", data=payload)
print(response.status_code)  # 打印响应状态码
print(response.text)         # 打印响应内容

在上面的示例中,我们使用post方法发送了一个POST请求,并将参数payload通过data参数传递给请求。

设置请求头

有时候,我们需要设置一些自定义的请求头。requests库允许我们通过headers参数设置请求头。下面是一个示例:

import requests

headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get("https://www.fivcan.com", headers=headers)
print(response.text)  # 打印响应内容

在上面的示例中,我们通过headers参数设置了User-Agent请求头,模拟了一个浏览器发送的请求。

错误处理

在实际应用中,我们需要处理可能发生的错误。requests库提供了一些异常类来处理不同类型的错误。下面是一个示例:

import requests
from requests.exceptions import Timeout, ConnectionError

try:
    response = requests.get("https://www.fivcan.com", timeout=5)
    print(response.text)  # 打印响应内容
except Timeout:
    print("请求超时")
except ConnectionError:
    print("连接错误")

在上面的示例中,我们使用timeout参数设置了请求的超时时间,当请求超时或发生连接错误时,会抛出相应的异常。

在前面的博客中,我们已经介绍了requests库的基本用法。本文将进一步探讨requests库的高级用法,包括会话管理、身份验证、Cookie处理和文件上传等。我们将提供详细的示例代码,并展开说明细节和注意事项。

会话管理

在某些情况下,我们需要保持会话状态,例如在进行多个请求时保持登录状态或共享一些会话级别的参数。requests库提供了Session对象来管理会话。下面是一个示例:

import requests

session = requests.Session()

# 第一个请求
response1 = session.get("https://www.fivcan.com/login")
print(response1.text)

# 第二个请求
response2 = session.post("https://www.fivcan.com/login", data={"username": "admin", "password": "123456"})
print(response2.text)

在上面的示例中,我们创建了一个Session对象,并使用该对象发送了两个请求。Session对象会自动处理会话状态和Cookie,使得后续的请求能够保持相同的会话。

身份验证

有时候,我们需要向服务器发送带有身份验证信息的请求。requests库支持多种身份验证方式,包括基本身份验证和摘要身份验证。下面是一个示例:

import requests
from requests.auth import HTTPBasicAuth

response = requests.get("https://www.fivcan.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)

在上面的示例中,我们使用auth参数设置了基本身份验证,并提供了用户名和密码。

Cookie处理

requests库可以自动处理Cookie,使得我们无需手动管理Cookie。下面是一个示例:

import requests

response = requests.get("https://www.fivcan.com")
cookies = response.cookies

# 将Cookie保存到文件
with open("cookies.txt", "w") as f:
    for cookie in cookies:
        f.write(f"{cookie.name}={cookie.value}\n")

# 从文件加载Cookie
with open("cookies.txt", "r") as f:
    cookies = {}
    for line in f:
        name, value = line.strip().split("=")
        cookies[name] = value

response = requests.get("https://www.fivcan.com", cookies=cookies)
print(response.text)

在上面的示例中,我们首先发送一个请求获取Cookie,并将Cookie保存到文件。然后,我们从文件加载Cookie,并将其传递给后续的请求。

文件上传

requests库还支持文件上传。下面是一个示例:

import requests

files = {"file": open("example.txt", "rb")}

response = requests.post("https://www.fivcan.com/upload", files=files)
print(response.text)

在上面的示例中,我们通过files参数指定了要上传的文件。requests库会自动处理文件上传的细节。

注意事项

  • 在处理异常时,建议使用try-except块来捕获和处理异常。requests库提供了一些异常类,例如TimeoutConnectionError,可以用于处理超时和连接错误等情况。
  • 在发送请求时,可以通过设置timeout参数来指定超时时间。这样可以避免长时间等待响应而导致程序阻塞的情况。
  • 在使用requests库发送请求时,请确保遵守相关网站的使用规定和法律法规。

当然!除了前面提到的会话管理、身份验证、Cookie处理和文件上传,requests库还有一些其他高级用法。下面我们将继续介绍这些用法,并提供示例代码。

SSL证书验证

默认情况下,requests库会自动验证SSL证书。但在某些情况下,你可能需要禁用证书验证或使用自定义的证书。下面是一个示例:

import requests

# 禁用证书验证
response = requests.get("https://www.fivcan.com", verify=False)
print(response.text)

# 使用自定义的证书
response = requests.get("https://www.fivcan.com", cert=("path/to/cert.pem", "path/to/key.pem"))
print(response.text)

在上面的示例中,我们通过verify参数禁用了证书验证,或者通过cert参数指定了自定义的证书。

代理设置

如果你需要通过代理服务器发送请求,可以使用proxies参数来设置代理。下面是一个示例:

import requests

proxies = {
    "http": "http://proxy.example.com:8080",
    "https": "http://proxy.example.com:8080",
}

response = requests.get("https://www.fivcan.com", proxies=proxies)
print(response.text)

在上面的示例中,我们通过proxies参数设置了HTTP和HTTPS的代理。

响应处理

requests库提供了多种方法来处理响应数据,例如获取响应头、转换为JSON、保存到文件等。下面是一些示例:

import requests

response = requests.get("https://www.fivcan.com")

# 获取响应头
print(response.headers)

# 将响应内容解析为JSON
json_data = response.json()
print(json_data)

# 保存响应内容到文件
with open("response.txt", "w") as f:
    f.write(response.text)

在上面的示例中,我们使用headers属性获取响应头,使用json()方法将响应内容解析为JSON,使用text属性获取响应内容并保存到文件。

重定向处理

默认情况下,requests库会自动处理重定向。但有时你可能需要禁止重定向或自定义重定向行为。下面是一个示例:

import requests

# 禁止重定向
response = requests.get("https://www.fivcan.com", allow_redirects=False)
print(response.status_code)

# 自定义重定向
response = requests.get("https://www.fivcan.com", allow_redirects=True, max_redirects=5)
print(response.url)

在上面的示例中,我们通过allow_redirects参数禁止了重定向,或者通过max_redirects参数设置了最大重定向次数。

高级定制

requests库提供了丰富的参数和方法,可以进行高级定制。例如,你可以设置请求超时时间、设置请求的User-Agent、添加自定义的请求头等。下面是一个示例:

import requests

headers = {
    "User-Agent": "Mozilla/5.0",
    "X-Custom-Header": "Custom Value"
}

response = requests.get("https://www.fivcan.com", headers=headers, timeout=5)
print(response.text)

在上面的示例中,我们通过headers参数设置了User-Agent和自定义的请求头,通过timeout参数设置了请求的超时时间。

总结

本文介绍了requests库的基本用法, requests库提供了丰富的功能和灵活的选项,使得与网络进行交互变得非常便捷。希望本文对你进一步了解和使用requests库有所帮助。

参考资料:

30 Replies to “python爬虫入门(一)- python中的requests库的基本用法”

  1. Помощь для Когда обратиться за адвоката в непонятной ситуации?
    качественную для защиты прав?
    Нужна для решения?
    Где найти профессионального для помощи?
    проблемы можно решить с юриста?
    Когда бесплатно советы от юриста по юридическим?
    онлайн от адвоката?
    подготовиться к консультации с юристом для пользы?
    обстоятельствами нужно факты для консультации?
    Когда на консультацию от адвоката?
    услуги можно обратиться за консультацией адвоката?
    Как обратиться, если вопросы с документами?
    Как с адвокатом для консультации?
    Какие нужно подготовить для консультации?
    договариваться с юристом о консультации и услуг?
    Какие документы нужно заполнить перед обращением к адвокату?
    Как для положительного?
    Как провести договоренности с оппонентом после консультации с адвокатом?
    подготовиться к заседанию после консультации от юриста?
    адвокат по наследству адвокат по наследству.

  2. Hey would you mind letting me know which hosting company you’re utilizing? I’ve loaded your blog in 3 different web browsers and I must say this blog loads a lot faster then most. Can you recommend a good web hosting provider at a reasonable price? Thanks a lot, I appreciate it!

  3. Thank you a bunch for sharing this with all people you actually recognise what you’re speaking about! Bookmarked. Please additionally seek advice from my site =). We will have a hyperlink change agreement between us!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注