我正在使用 BeautifulSoup 来抓取 URL,并且我有以下代码来查找td类为的标签'empformbody':
td
'empformbody'
import urllib import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.example.com/servlet/av/ResultTemplate=AVResult.html" req = urllib2.Request(url) response = urllib2.urlopen(req) the_page = response.read() soup = BeautifulSoup(the_page) soup.findAll('td',attrs={'class':'empformbody'})
现在,我们可以使用上面的代码findAll来获取标签及其相关信息,但我想使用 XPath。是否可以将 XPath 与 BeautifulSoup 一起使用?如果可能,请提供示例代码。
findAll
BeautifulSoup 本身不支持 XPath 查询,但你可以使用 lxml 库,它支持 XPath 并且可以与 BeautifulSoup 配合使用。以下是如何将 lxml 与 BeautifulSoup 结合使用的示例:
lxml
bash pip install lxml
```python import requests from bs4 import BeautifulSoup from lxml import etree
url = "http://www.example.com/servlet/av/ResultTemplate=AVResult.html” response = requests.get(url) soup = BeautifulSoup(response.content, ‘lxml’)
# 使用 BeautifulSoup 和 lxml 结合处理 XPath 查询 tree = etree.HTML(str(soup))
# 使用 XPath 查找 class 为 ‘empformbody’ 的 td 标签 td_elements = tree.xpath(“//td[@class=’empformbody’]”)
for td in td_elements: print(td.text_content()) ```
requests.get(url)
BeautifulSoup(response.content, 'lxml')
'lxml'
etree.HTML(str(soup))
ElementTree
tree.xpath("//td[@class='empformbody']")
empformbody
这样,你可以利用 XPath 在 BeautifulSoup 处理的 HTML 内容中进行更复杂的查询。