我正在尝试编写一个脚本,它将把我提供的数据输入到我提供的网址上的web表单中。
首先,我将通过获取页面的html并将其作为文本文件输出来测试它。(我使用的是Windows,因此是.txt。)
import sys
import requests
sys.stdout = open('html.txt', 'a')
content = requests.get('http://www.york.ac.uk/teaching/cws/wws/webpage1.html')
content.text
当我在python命令行(>>>)上执行这个操作(即最后两行)时,我得到了我期望的结果。当我在这个脚本中执行它并从普通命令行运行它时,得到的html.txt是空的。如果我添加print(content)
,那么html.txt只包含:。
有人能解释一下这是怎么回事吗?而且,正如您可能知道的那样,我是一个初学者,在我的一生中,我无法找到一个初级教程来解释如何使用请求(或urllib2、selenium或其他什么)将数据发送到网页并检索结果。谢谢!
发布于 2016-04-29 17:46:41
你想:
import sys
import requests
result = requests.get('http://www.york.ac.uk/teaching/cws/wws/webpage1.html')
if result.status_code == requests.codes.ok:
with open('html.txt', 'a') as sys.stdout:
print result.content
请求返回request.Response
类型的实例。当您试图打印时,调用了__repr__
方法,如下所示:
def __repr__(self):
return '<Response [%s]>' % (self.status_code)
这就是<Response [200]>
的来历。
requests.Reponse
有一个content
属性,它是包含str
的str
(或bytes
for Python3)的一个实例。
text
属性是unicode
类型,它可能是您想要的,也可能不是您想要的。您在注释中提到,当您试图将UnicodeDecodeError
写入文件时,您看到了它。我能够将上面的print result.content
替换为print result.text
,但是我没有得到这个错误。
如果您需要帮助解决您的unicode
问题,我建议您阅读这个unicode表示。它解释了为什么以及何时解码和编码unicode
。
发布于 2016-04-29 17:51:37
交互式解释器回显不产生None
的每个表达式的结果。这种情况不会发生在常规脚本中。
使用print
显式回送值:
print response.content
我在这里使用了未解码的版本,因为您要将stdout重定向到没有进一步编码信息的文件。
但是,最好将输出直接写入文件:
with open('html.txt', 'ab') as outputfile:
outputfile.write(response.content)
这将未解码的响应体直接写入文件。
https://stackoverflow.com/questions/36944487
复制相似问题