如何使用BeautifulSoup选择div父节点内的所有表元素?

2024-05-14 19:54:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用自定义函数从div父节点选择所有table元素

到目前为止,我得到的是:

import BeautifulSoup
import requests
import lxml

url = 'https://www.salario.com.br/profissao/abacaxicultor-cbo-612510'

def getTables(url):

    url = requests.get(url)
    soup=BeautifulSoup(url.text, 'lxml')

    div_component = soup.find('div', attrs={'class':'td-post-content'})
    tables = div_component.find_all('table', attrs={'class':'listas'})

    return tables

但是,当作为getTables(url)应用时,输出是一个空列表[]

我希望这个函数返回div节点中给定特定属性的所有html表格元素

如何调整此功能

有没有其他图书馆可以用来完成这项任务


Tags: 函数importdivurl元素节点tablefind
2条回答

采纳其他评论者的观点,并加以扩展

您的div_component返回1个元素,不包含表,但使用find_all()yeilds 8个元素:

len(soup.find_all('div', attrs={'class':'td-post-content'}))

因此,您不能只在列表上使用find(),您需要遍历它以找到包含表的div

另一种方法是,你可以使用

tables = soup.find_all('table', attrs={'class':'listas'})

其中tables是一个包含6个元素的列表。如果您知道需要哪个表,可以遍历这些表,直到找到所需的表

第一个问题是“查找”只找到第一个这样的匹配项。第一篇td帖子内容<;部门>;不包含任何表。我想你想要“芬德尔”。其次,您可以将CSS选择器与BeautifulSoup一起使用。因此,您可以在不使用attributes参数的情况下搜索soup.findall('div.td-post-content')

相关问题 更多 >

    热门问题