web-dev-qa-db-ja.com

BeautifulSoupユーザー警告を取り除く方法は?

BeautifulSoupをインストールした後、cmdでPythonを実行すると、この警告が表示されます。

D:\Application\python\lib\site-packages\beautifulsoup4-4.4.1-py3.4.Egg\bs4\__init__.py:166:
UserWarning: No parser was explicitly specified, so I'm using the best
available HTML parser for this system ("html.parser"). This usually isn't a
problem, but if you run this code on another system, or in a different
virtual environment, it may use a different parser and behave differently.

To get rid of this warning, change this:

 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "html.parser")

なぜ出てくるのか、どうやって解決するのかという理想はありません。

39
jellyfishhuang

問題の解決策は、エラーメッセージに明記されています。以下のようなコードは、XML/HTML /などを指定していません。パーサー。

BeautifulSoup( ... )

エラーを修正するには、使用するパーサーを次のように指定する必要があります。

BeautifulSoup( ..., "html.parser" )

必要に応じて、サードパーティのパーサーをインストールすることもできます。

76
Ethan Bierlein

ドキュメントでは、速度を上げるために lxml をインストールして使用することを推奨しています。

BeautifulSoup(html, "lxml")

2.7.3より前のPython 2のバージョン、または3.2.2より前のPython 3のバージョンを使用している場合、lxmlまたはhtml5lib–Pythonをインストールすることが不可欠です。組み込みのHTMLパーサーは、古いバージョンではあまり良くありません。

LXMLパーサーのインストール

  • Ubuntu(debian)で

    apt-get install python-lxml 
    
  • Fedora(RHELベース)

    dnf install python-lxml
    
  • PIPを使用する

    pip install lxml
    
13

HTMLパーサーの場合、html5libをインストールし、次を実行する必要があります。

pip install html5lib

次に、BeautifulSoupメソッドにhtml5libを追加します。

htmlDoc = bs4.BeautifulSoup(req1.text, 'html5lib')
print(htmlDoc)
3
Wilson Wu