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
库提供了一些异常类,例如Timeout
和ConnectionError
,可以用于处理超时和连接错误等情况。 - 在发送请求时,可以通过设置
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
库有所帮助。
参考资料:
uQcPNVRwKv
ujXmnwKiYMyAqrb
zWUCtYsBXvkL
fiAXUWRZSlg
SFAVdfHI
MkafTKEW
vogqZLpYQPGcykdX
zfErJjvOd
BCkdJFMgzTUnZHXf
Excellent write-up
Excellent write-up
Outstanding feature
great article
Помощь для Когда обратиться за адвоката в непонятной ситуации?
качественную для защиты прав?
Нужна для решения?
Где найти профессионального для помощи?
проблемы можно решить с юриста?
Когда бесплатно советы от юриста по юридическим?
онлайн от адвоката?
подготовиться к консультации с юристом для пользы?
обстоятельствами нужно факты для консультации?
Когда на консультацию от адвоката?
услуги можно обратиться за консультацией адвоката?
Как обратиться, если вопросы с документами?
Как с адвокатом для консультации?
Какие нужно подготовить для консультации?
договариваться с юристом о консультации и услуг?
Какие документы нужно заполнить перед обращением к адвокату?
Как для положительного?
Как провести договоренности с оппонентом после консультации с адвокатом?
подготовиться к заседанию после консультации от юриста?
адвокат по наследству адвокат по наследству.
Excellent write-up
great article
Outstanding feature
Outstanding feature
Insightful piece
good online mexican pharmacy
VGXqUixb
eqjtwZmG
Insightful piece
canadianpharmacymeds com
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!
very nice put up, i certainly love this web site, keep on it
Discovered an article that will surely interest you Р I recommend checking it out http://t98223u0.beget.tech/2024/05/08/pobeda-zhdet-vas-vash-put-betunlim.html
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!
You have observed very interesting details! ps nice internet site. “I’m going to a special place when I die, but I want to make sure my life is special while I’m here.” by Payne Stewart.
I love it when people come together and share opinions, great blog, keep it up.