ここでは、Beautifulsoupオブジェクトを初期化するさまざまな方法を見てきました。私が見る限り、string = urlを渡すことも、オブジェクトを渡すこともできます。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
を使用するのが一般的ですか?私が見る限り、urllib.request.urlopen(url).read()
は純粋なhtml文字列url_html
と同じものです。しかし、スープ3はどうですか? BeautifulSoupのコンストラクタで文字列が必要で、urlopen()
によって返されたオブジェクトにtoStringメソッドがあるため、このメソッドは機能しますか?オブジェクトは文字列に変換され、実際には3番目のメソッドは2番目のメソッドと同じですか?
BeautifulSoupを初期化する他の方法はありますか?どちらが望ましいですか?
ありがとうございました。確かに、これはクミのソースページで見つけました。 'hasattr(マークアップ、 '読み取り'):#ファイルタイプのオブジェクトです。 ' 'markup = markup.read()' 'self.markup =マークアップ' – parsecer
@parsecer、私の答えを受け入れる気になります;)? –