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,介意接受我的回答;)? –