XPathはXML文章中の要素、属性値などを指定するための言語です。XPathではXML文章をツリーとして捉えることで、要素や属性の位置を指定することができます。HTMLもXMLの一種とみなすことができるため、XPathを使ってHTML文章中の要素を指定することができます。
XPathには論理演算子としてand
、or
、not()
があります。これらの演算子を使用することで、特定の条件を満たす要素を効率的に検索することができます。
例えば、以下のようなXMLがあるとします。
<bookstore>
<books>
<book name="book1" title="Title 1" author="Author 1"/>
<book name="book2" title="Title 2" author="Author 2"/>
<book name="book3" title="Title 1" author="Author 2"/>
</books>
<myBooks>
<book name="Test1" title="Title 1" author="Author 1"/>
<book name="Test2" title="Title 2" author="Author 1"/>
<book name="Test3" title="Title 1" author="Author 2"/>
</myBooks>
</bookstore>
このXMLから、myBooks
内の各book
要素がbooks
内のどのbook
要素ともタイトルと著者が一致しないものを検索したいとします。この場合、XPathのand
演算子を使用して以下のように検索することができます。
//myBooks/book[not(@title = //books/book/@title and @author = //books/book/@author)]
このXPathは、myBooks
内の各book
要素に対して、そのタイトルと著者がbooks
内のどのbook
要素とも一致しないものを検索します。
PythonでWebスクレイピングを行う際には、このようなXPathの論理演算子を活用することで、効率的に目的の要素を抽出することができます。特に、複数の条件を組み合わせて要素を検索する必要がある場合には、XPathの論理演算子は非常に強力なツールとなります。