Beautiful组在没有findAll的情况下按属性导航div



如何通过调用汤的属性来找到特定的div?即类似soup.html.body.div的东西,但是我不知道如何在这里用id='idname'获得特定的div?

我可以使用soup.findAll(id='idname')[0]来获取特定的标签,但据我所知,这是在搜索整个汤。

我想在汤上按属性获取div会更快,因为你没有使用findAll()

Firebug报告位置为html.body.div[2].form.table[2].tbody.tr[3]...,但执行soup.html.body.div[2]会出现关键错误。

更新:

说你想抓住我感觉很幸运按钮http://www.google.com,firebug报告称:

/html/body/center/span/center/div[2]/form/div[2]/div[3]/center/input[2]

有没有一种方法可以在不使用findAll的情况下达到

从Firebug获得的路径是一个XPath表达式。最好使用可以直接使用xpath的解析器。我喜欢使用lxml及其etree接口:

from lxml import etree
tree = etree.parse(yourfile)
lucky = tree.xpath('/html/body/center/span/center/div[2]/form/div[2]/div[3]/center/input[2]')

有一个findChildren方法,它可以实现大部分功能。

它相当于:

findAll(tagname, recursive=False)

这通常会使其更有效率。

所以你的例子会变成:

soup.html.body.center.span.center.findChildren('div')[2].
    form.findChildren('div')[2].findChildren('div')[3].
    center.findChildren('input')[2]

最新更新