The most popular package that implements XPath selectors in Python is lxml. We can use the xpath()
method to find all matching values:
from lxml import etree tree = etree.fromstring(""" <div> <a>link 1</a> <a>link 2</a> </div> """) for result in tree.xpath("//a"): print(result.text) "link 1" "link 2"
However, in web scraping the recommended way is to use the parsel package. It's based on lxml
and providers a more consistent behavior when working with HTML content:
from parsel import Selector selector = Selector(""" <div> <a>link 1</a> <a>link 2</a> </div> """) selector.xpath("//a").getall() ['<a>link 1</a>', '<a>link 2</a>']