XPath と BeautifulSoup を統合することは可能ですか?
Web スクレイピングの取り組みで、XPath と BeautifulSoup を活用して「td」タグから特定のデータを取得しようとしています。 「empformbody」クラスで装飾されています。 BeautifulSoup は XPath をネイティブにサポートしていませんが、実行可能な解決策を検討してみましょう。
BeautifulSoup との XPath の互換性
残念ながら、BeautifulSoup には XPath 式のサポートが組み込まれていません。ただし、XPath クエリ機能を提供する lxml ライブラリを組み込むことで目標を達成できます。 lxml は BeautifulSoup 互換モードを提供し、既存の BeautifulSoup セットアップへの XPath のシームレスな統合を容易にします。
lxml を使用した XPath の実装
lxml で XPath を使用するには、解析から始めます。 HTML ドキュメントを lxml ツリーに追加します。これは、.xpath() メソッドを利用して要素を検索することで実現できます。
from lxml import etree tree = etree.parse('your_html_file.html') tree.xpath(xpathselector)
コード例
「td」タグを抽出するコード例を次に示します。 XPath を使用した 'empformbody' クラス:
from lxml import etree url = "http://www.example.com/servlet/av/ResultTemplate=AVResult.html" response = urlopen(url) tree = etree.parse(response, etree.HTMLParser()) xpathselector = '//td[@class="empformbody"]' result = tree.xpath(xpathselector)
CSS セレクター サポートの活用
lxml は、特定の要素の検索を簡素化できる追加の CSS セレクター サポートを提供します。これにより、CSS ステートメントを XPath 式に変換できます。これを実現する方法は次のとおりです:
from lxml.cssselect import CSSSelector td_empformbody = CSSSelector('td.empformbody') for elem in td_empformbody(tree): # Do something with these table cells.
BeautifulSoup で CSS セレクターを使用する代替ルート
BeautifulSoup は XPath を直接サポートしていませんが、包括的な CSS セレクター サポートを備えています。 BeautifulSoup 内で CSS セレクターを使用する方法は次のとおりです。
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html_document) for cell in soup.select('table#foobar td.empformbody'): # Do something with these table cells.
lxml の機能を利用するか、BeautifulSoup 内で CSS セレクターを利用することにより、データ抽出に XPath 式を効率的に活用できます。
以上がXPath は Web スクレイピングに BeautifulSoup で使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。