【问题标题】: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