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

Python HTTP响应由BeautifulSoup的read()自动修改,python,python-3.x,web-scraping,beautifulsoup,urllib,Python,Python 3.x,Web Scraping,Beautifulsoup,Urllib,我试图运行以下代码,但注意到在我通过read()提取内容后,bsObj1的文本被修改为空白文本bsObj3也被修改为空白文本,而我没有对它做任何修改 为什么bsObj1和bsObj3会变成空白?如何防止bsObj1自动更改 from urllib.request import urlopen from bs4 import BeautifulSoup def getLinks(pageUrl): html1 = urlopen(pageUrl) html2 = urlopen(

我试图运行以下代码,但注意到在我通过
read()
提取内容后,
bsObj1
的文本被修改为空白文本<代码>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

非常感谢

我相信你的代码有误。您已经阅读了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


希望这有帮助。

谢谢!这不是打字错误,但我不知道
read()
会改变
html1
,因为我以为我只是在提取它的内容。对于
html3
,我尝试了
html3.\uu repr\uuu()
,并注意到它的内存地址与
html1
相同。有没有办法只复制对象而不共享同一地址?如果您想了解复制对象的相关信息,请阅读以下内容: