我尝试运行以下代码,但发现在bsObj1
提取内容后,read()
的文字被修改为空白文本。 bsObj3
也被修改为空白文本,而我没有做任何事情。
为什么bsObj1
和bsObj3
会变成空白?如何防止bsObj1
自动更改?
from urllib.request import urlopen
from bs4 import BeautifulSoup
def getLinks(pageUrl):
html1 = urlopen(pageUrl)
html2 = urlopen(pageUrl)
html3 = html1
body1 = html1.read()
bsObj1 = BeautifulSoup(html1)
bsObj2 = BeautifulSoup(html2)
bsObj3 = BeautifulSoup(html3)
print("bsObj1's length is "+str(len(bsObj1.text)))
print("bsObj2's length is "+str(len(bsObj2.text)))
print("bsObj3's length is "+str(len(bsObj3.text)))
if __name__ == '__main__':
getLinks("https://en.wikipedia.org/wiki/Main_Page")
输出: -
bsObj1's length is 0
bsObj2's length is 16000
bsObj3's length is 0
非常感谢提前!
答案 0 :(得分:1)
我相信你的代码中有拼写错误。你已经阅读了html1,所以当你把它解析为BeautifulSoup时,它将不会读取任何内容,因为body1 = html1.read()
。已阅读html1已经与html3
相同,因为它等于html1
以下代码工作正常。
body1 = html1.read()
bsObj1 = BeautifulSoup(body1)
bsObj2 = BeautifulSoup(html2)
bsObj3 = BeautifulSoup(body1)
示例输出
bsObj1的长度是16028
bsObj2的长度是16028
bsObj3的长度是16028
希望这有帮助。