首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用BeautifulSoup选择div父节点中的所有表元素?

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

Stack Overflow用户
提问于 2021-03-08 01:10:09
回答 2查看 144关注 0票数 0

我试图使用自定义函数从table父节点中选择所有的div元素。

到目前为止,这就是我所得到的:

代码语言:javascript
复制
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表元素,给出他特定的属性。

我怎样才能调整这个功能?

还有其他库可以用来完成这个任务吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-08 04:07:00

接受其他评论者所说的话,并对其进行扩展。

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

代码语言:javascript
复制
len(soup.find_all('div', attrs={'class':'td-post-content'}))

因此,您不能只在列表中使用find(),您需要对其进行迭代以找到包含表的div

另一种只需查找想要的表的方法,只需使用

代码语言:javascript
复制
tables = soup.find_all('table', attrs={'class':'listas'})

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

票数 1
EN

Stack Overflow用户

发布于 2021-03-08 01:22:55

第一个问题是“查找”只找到第一个这样的匹配。第一个td-post内容不包含任何表。我想你想要“发现”。其次,您可以在BeautifulSoup中使用CSS选择器。因此,您可以在不使用属性参数的情况下搜索soup.findall('div.td-post-content')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66523174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档