使用BeautifulSoup检索内部元素



我想使用Beautiful Soup 4(BS4(检索一个内部元素(一个表(。

使用Firefox Inspector,我可以在下面的XPATH中找到该对象:

/html/body/form/table/tbody/tr/td/table/tbody/tr[1]/td/table[2]/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[4]/td[2]/table

我在BS4文档中找不到任何方法来检索给定XPATH的元素。但我可以用以下代码来完成

response = requests.get(urljoin(BASE_URL, path))
soup = bs(response.text, 'html.parser')
#%% Retrieve the inner table
node = soup.html.body.form
node = node.find("table", recursive=False)
node = node.tr.td.table.tr.td
node = node.findAll("table", recursive=False)[1]
node = node.tr.td.table.tr
node = node.findAll("td", recursive=False)[1]
node = node.table
node = node.findAll("tr", recursive=False)[3]
node = node.findAll("td", recursive=False)[1]
node = node.table

正如你所看到的。它完全模仿XPATH,但当给定深度中存在多个元素时,我必须使用findAll()调用,而我不想要第一个。

有没有一种方法可以通过XPATH或类似的方法来做到这一点?

恐怕您不能将xpath与bs4一起使用。如果xpath是强制性的,您可以将selenium或scrky与bs4结合使用,也可以单独使用它们。

我们可以在BeautifulSoup中使用XPath吗?

最新更新