2017-01-23 10 views
0

私はバランスのとれたhtmlタグではないhtmlファイルの一部を解析しています。美しいスープで不均衡なhtmlファイルを解析する4

この部分的なHTMLファイルには、最初の行がありません。美しいスープがファイルの残りの部分を解析できる可能性はありますか?まだ別のタグの情報を抽出できますか?

ありがとうございました。

Example Domain</title> <!-- <====missing tag in this line --> 

<meta charset="utf-8" /> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1" /> 
<style type="text/css"> 
body { 
    background-color: #f0f0f2; 
    margin: 0; 
    padding: 0; 
    font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 

} 
div { 
    width: 600px; 
    margin: 5em auto; 
    padding: 50px; 
    background-color: #fff; 
    border-radius: 1em; 
} 
a:link, a:visited { 
    color: #38488f; 
    text-decoration: none; 
} 
@media (max-width: 700px) { 
    body { 
     background-color: #fff; 
    } 
    div { 
     width: auto; 
     margin: 0 auto; 
     border-radius: 0; 
     padding: 1em; 
    } 
} 
</style>  
+0

デフォルトではないパーサーを指定する必要があります。あなたは 'lxml'または' html5lib'を試すことができます。どちらも経験はありません。 – Alden

+0

これはlxmlを使用しようとしたときに得たものです "bs4.FeatureNotFound:要求された機能を持つツリービルダーが見つかりませんでした:lxml。パーサーライブラリをインストールする必要がありますか?" html5libパーサーに切り替えると、同様のエラーメッセージが表示される "bs4.FeatureNotFound:要求された機能を持つツリービルダーが見つかりませんでした:html5lib。パーサーライブラリをインストールする必要がありますか?" 両方のライブラリをインストールしようとしましたが、失敗しました。私はOSX 10.9.5を使用しています。 Python3.4.4。どんなアイデアもありがとう! – DBS

+0

pipでエラーメッセージが表示されましたか?私は 'pip install html5lib'を実行し、次のコードは' bs4 import BeautifulSoup;スープ= BeautifulSoup( " asdf"、 "html5lib");印刷(スープ) ' – Alden

答えて

0

html5libがより堅牢ですが、遅い)すべての先進的なパーサを使用してください。結果は異なります:

soup = BeautifulSoup(open('foo.html'), 'lxml') 
#<html><body><p>Example Domain <!-- <====missing tag in this line --> 
#<meta charset="utf-8"/> 

soup = BeautifulSoup(open('foo.html'), 'html5lib') 
#<html><head></head><body>Example Domain <!-- <====missing tag in this line --> 
# 
#<meta charset="utf-8"/> 
関連する問題