Python 中从 URL 获取数据
URL 或统一资源定位符是指向 Internet 上某些资源的有效且唯一的 Web 地址。该资源可以是简单的文本文件、zip 文件、exe
文件、视频、图像或网页。
在网页的情况下,获取 HTML 或超文本标记语言内容。本文将展示如何使用 Python 从 URL 获取此 HTML 或超文本标记语言数据。
使用 Python 中的 requests
模块从 URL 获取数据
Python 有一个 requests
模块,可以轻松发送 HTTP(超文本传输协议)请求。此模块可用于从有效 URL 中获取 HTML 内容或任何内容。
requests
模块有一个 get()
方法,我们可以使用它从 URL 中获取数据。此方法接受一个 url
作为参数并返回一个 requests.Response
对象。
这个 requests.Response
对象包含有关服务器对发送的 HTTP 请求的响应的详细信息。如果一个无效的 URL 被传递给这个 get()
方法,get()
方法将抛出一个 ConnectionError
异常。
如果你不确定 URL 的有效性,强烈建议使用 try
和 except
块。只需将 get()
方法调用包含在 try
和 except
块中。这将在接下来的示例中进行描述。
现在,让我们了解如何使用此函数从有效 URL 中获取 HTML 内容或任何数据。相同的参考下面的代码。
要了解有关 requests.Response
对象的更多信息,请参阅官方文档此处。
import requests
try:
url = "https://www.lipsum.com/feed/html"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
输出:
HTML:
...
请注意,...
表示从 URL 获取的 HTML 内容。由于 HTML 内容太大,因此未在上面的输出中显示。
如果 URL 错误,上面的代码将运行 except
块内的代码。下面的代码描述了它是如何工作的。
import requests
try:
url = "https://www.thisisafaultyurl.com/faulty/url/"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
输出:
Invalid URL or some error occurred while making the GET request to the specified URL
出于安全目的,某些网页不允许 GET
请求获取其内容。在这种情况下,我们可以使用 requests
模块中的 post()
方法。
顾名思义,此方法将 POST
请求发送到有效的 URL。该方法接受两个参数,即 url
和 data
。
url
是目标 URL,而 data
接受键值对形式的标题详细信息字典。标头详细信息可以是 API 或应用程序编程接口密钥、CSRF 或跨站点请求伪造令牌等。
这种情况下的 Python 代码如下。
import requests
try:
url = "https://www.thisisaurl.com/that/accepts/post/requests/"
payload = {
"api-key": "my-api-key",
# more key-value pairs
}
r = requests.post(url, data=payload)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the POST request to the specified URL"
)