HTTP响应被BeautifulSoup的read()自动修改

2024-09-30 16:32:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行以下代码,但注意到bsObj1的文本在我通过read()提取其内容后被修改为空白文本bsObj3也被修改为空白文本,而我什么也没做

为什么bsObj1bsObj3会变成空白?如何防止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")

Output:- 你知道吗

bsObj1's length is 0
bsObj2's length is 16000
bsObj3's length is 0

非常感谢


Tags: text文本lenislength空白urlopenprint
1条回答
网友
1楼 · 发布于 2024-09-30 16:32:41

我相信你的密码有误。你已经读过html1了,所以当你把它解析成BeautifulSoup时,它什么也不读,因为body1 = html1.read()。已经读过html1了吗?html3html1

所以下面的代码可以正常工作

body1 = html1.read()

bsObj1 = BeautifulSoup(body1)
bsObj2 = BeautifulSoup(html2)
bsObj3 = BeautifulSoup(body1)

样本输出

bsObj1的长度是16028 bsObj2的长度是16028 bsObj3的长度是16028

希望这有帮助

相关问题 更多 >