[英]Printing same HTTPResponse Object returns different outputs - Python
def crawl(url):
html = getHTML(url) # getHTML() retruns HTTPResponse
print(html.read()) # PRINT STATMENT 1
if (html == None):
print("Error getting HTML")
else:
# parse html
bsObj = BeautifulSoup(html, "lxml")
# print data
try:
print(bsObj.h1.get_text())
except AttributeError as e:
print(e)
print(html.read()) # PRINT STAETMENT 2
我不明白的是..
打印声明1打印整个html,而打印声明2仅打印b''
这是怎么回事 ..我对Python很陌生。
html
是一个HTTPResponse对象。 HTTPResponse支持类似文件的操作,例如read()
。
就像读取文件时一样, read()
消耗可用数据并将文件指针移到文件/数据的末尾 。 后续的read()
没有任何返回值。
您有两种选择:
使用seek()
方法读取后,将文件指针重置为开头:
print(html.read()) html.seek(0) # moves the file pointer to byte 0 relative to the start of the file/data
而是保存结果:
html_body = html.read() print(html_body)
通常,您将使用第二个选项,因为重用html_body
会更容易
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.