Python 如何使用BeautifulSoup选择div父节点内的所有表元素?
我试图使用自定义函数从父节点Python 如何使用BeautifulSoup选择div父节点内的所有表元素?,python,html,function,web-scraping,beautifulsoup,Python,Html,Function,Web Scraping,Beautifulsoup,我试图使用自定义函数从父节点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, 'lxm
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表格元素
如何调整此功能
是否有其他库可用于完成此任务?第一个问题是“查找”仅查找第一个此类匹配项。第一个td post内容不包含任何表。我想你想要“芬德尔”。其次,您可以将CSS选择器与BeautifulSoup一起使用。因此,您可以在不使用attributes参数的情况下搜索
soup.findall('div.td-post-content')
。第一个问题是“find”只查找第一个匹配项。第一个td post内容不包含任何表。我想你想要“芬德尔”。其次,您可以将CSS选择器与BeautifulSoup一起使用。因此,您可以搜索soup.findall('div.td-post-content')
,而无需使用attributes参数。接受其他评论者的评论,并对其进行扩展
您的div\u组件
返回1个元素,不包含表,但使用find\u 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个元素的列表。如果你知道你想要哪个表,你可以遍历这些表,直到找到你想要的那一个。接受其他评论者的评论,并在上面展开 您的
div\u组件
返回1个元素,不包含表,但使用find\u 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个元素的列表。如果您知道需要哪一个表,可以遍历这些表,直到找到所需的表。css选择器。选择('.td post content.listas')css选择器。选择('.td post content.listas'))