【问题标题】:BeautifulSoup: extracting HTML tag attributesBeautifulSoup:提取 HTML 标签属性
【发布时间】:2012-07-17 09:18:47
【问题描述】:

有没有办法只在text=True不指定标签的情况下获取HTML标签属性。

例子:

html=<p class="c4">SOMETEXT</p>

我能做到:

[tag.attrs for tag in soup.findAll('p')]
>>> [[(u'class', u'c1')]]

有没有办法:

[text.attrs for text in soup.findAll(text=True)]

非常感谢!

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    认为你想要这个,因为问题已经得到澄清:

    [tag.attrs for tag in soup.findAll(True) if tag.string]
    

    .findAll(True) 返回文档中的所有标签,所以即使它是空的,它们也会有一个.attr,如果标签有.string内容,则过滤。

    【讨论】:

    • 谢谢,也许这个问题措辞不当,但我的意思是在 text=True 时获取属性而不指定标签名称。
    • @root 好的,在这种情况下,您是否真的尝试过运行您在“有没有办法做:”中提到的代码?因为我相信这实际上会起作用......(虽然我不会称之为texttag 可能是一个更好的名字)
    • 我试过但得到了错误:回溯(最近一次调用最后一次):文件“”,第 1 行,在 文件“C:\Python26\lib\site-packages \BeautifulSoup.py”,第 473 行,在 getattr 中引发 AttributeError,“'%s' 对象没有属性 '%s'” % (self.__class__.__name__, attr) AttributeError: 'Declaration'对象没有属性“attrs”
    【解决方案2】:
    >>> from bs4 import BeautifulSoup as bs
    >>> html = '<p class="c4">SOMETEXT</p><p class="c5"></p>'
    >>> soup = bs(html)
    >>> [tag.attrs for tag in soup.findAll('p') if tag.string]
    [{'class': ['c4']}] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 2011-10-02
      • 2017-10-14
      • 2013-07-01
      • 2013-04-06
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多