Python 中从 URL 获取数据

Vaibhav Vaibhav 2022年5月17日
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 的有效性,强烈建议使用 tryexcept 块。只需将 get() 方法调用包含在 tryexcept 块中。这将在接下来的示例中进行描述。

现在,让我们了解如何使用此函数从有效 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。该方法接受两个参数,即 urldata

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")
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相关文章 - Python URL