【问题标题】:Requests: Explanation of the .text format请求:.text 格式的解释
【发布时间】:2016-04-21 13:02:51
【问题描述】:

我正在使用requests 模块和 Python 2.7 来构建一个基本的网络爬虫。

source_code = requests.get(url)
plain_text = source_code.text

现在,在上述代码行中,我将指定 URL 的源代码和其他元数据存储在 source_code 变量中。现在,在source_code.text 中,.text 属性到底是什么?它不是一个函数。我在文档中也找不到任何解释.text 的起源或功能的内容。

【问题讨论】:

标签: python python-2.7 web-crawler python-requests


【解决方案1】:

requests.get() 返回一个 Response object;它是具有.text 属性的对象;它不是 URL 的“源代码”,它是一个允许您访问响应的源代码(正文)以及其他信息的对象。 Response.text 属性为您提供响应的正文,解码为 unicode

请参阅快速入门文档的Response Content section

当您发出请求时,Requests 会根据 HTTP 标头对响应的编码进行有根据的猜测。访问r.text时使用Requests猜测的文本编码。

可以在 API 文档中找到更多信息,请参阅Response.text entry

响应的内容,以 unicode 表示。

如果 Response.encoding 为 None,则使用 chardet 猜测编码。

响应内容的编码仅根据 HTTP 标头确定,完全遵循 RFC 2616。如果您可以利用非 HTTP 知识更好地猜测编码,则应在访问此属性之前适当设置 r.encoding

您还可以使用Response.content 以原始字节的形式访问未解码的响应正文。

【讨论】:

  • 这回答了我所有的问题,还有更多!谢谢。
【解决方案2】:

在这一行

 source_code = requests.get(url)

source_code 有一个response 对象,而不是源代码。

应该是

response = requests.get(url)
source_code = response.text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2020-04-04
    • 1970-01-01
    相关资源
    最近更新 更多