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的新手。
答案 0 :(得分:1)
html
是一个HTTPResponse对象。 HTTPResponse支持类似文件的操作,例如read()
。
就像读取文件一样,read()
会消耗可用数据并将文件指针移动到文件/数据的 end 。随后的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