...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
上記は私のターミナルでの出力です。私はMac OS 10.7.xを使用しています。Python 2.7.1を使用しており、このチュートリアルBeautiful Soupとlxmlを入手します。両方とも正常にインストールされ、別のテストファイルで動作します。ここにあるこのエラーの原因となる Python スクリプトには、次の行を含めました。from pageCrawler import comparePages
また、pageCrawler ファイルには、次の 2 行を含めました。from bs4 import BeautifulSoup
from urllib2 import urlopen
この問題はどうすれば解決できるでしょうか?
ベストアンサー1
これはBSがHTMLを読むために使用するパーサーに関連しているのではないかと思います。文書はこちらしかし、私(OSX 使用者)のような場合は、少し作業が必要な問題に直面するかもしれません。
上記の BS4 ドキュメント ページでは、BS4 はデフォルトで Python 組み込み HTML パーサーを使用することが指摘されています。OSX を使用している場合、Apple バンドルの Python バージョンは 2.7.2 であり、文字のフォーマットに寛容ではありません。私も同じ問題に遭遇したので、回避策として Python のバージョンをアップグレードしました。これを仮想環境で実行すると、他のプロジェクトへの影響を最小限に抑えることができます。
それが面倒に思える場合は、LXML パーサーに切り替えることができます。
pip install lxml
そして、次のことを試してください:
soup = BeautifulSoup(html, "lxml")
シナリオによっては、これで十分かもしれません。私はこれが面倒だと感じ、Pythonのバージョンをアップグレードすることにしました。virtualenvを使用すると、パッケージを移行できますかなり簡単に。