0
我在這裏看到了很多方法來初始化Beautifulsoup對象。據我所見,你可以傳遞一個string = url或傳遞一些對象。例如,它的共同使用urllib
:Beautifulsoup構造函數及其參數
url="https://somesite.com"
url_html="<html><body><h1>Some header</h1><p>asdas</p></body></html>"
soup1=BeautifulSoup(url_html, "html.parser") #1st way
print(soup1.find("p").text) #can get the text "asdas"
soup2=BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser") #2nd way
soup3=BeautifulSoup(urllib.request.urlopen(url), "html.parser") #3rd way
print(soup1.prettify())
print(soup2.prettify())
print(soup3.prettify())
但初始化湯的最後兩個方法裏面會發生什麼?據我所見,urllib.request.urlopen(url).read()
和純html字符串url_html
是一樣的。但湯3呢? 它是否工作,因爲BeautifulSoup的構造函數需要一個字符串,並且在由urlopen()
返回的對象中存在toString方法?而對象被轉換成字符串,實際上第三種方法與第二種方法相同?
是否有任何其他方式來初始化BeautifulSoup?哪個更好?
謝謝!事實上,在crummy的源代碼頁上發現了這個: '如果hasattr(標記,'讀''):#它是一個文件類型的對象。「# 'markup = markup.read()' 'self.markup = markup' – parsecer
@parsecer,介意接受我的回答;)? –