当前位置: 首页 > 面试题库 >

BeautifulSoup:从HTML获取CSS类

徐佐
2023-03-14
问题内容

有没有一种方法可以从HTML文件中获取CSS类BeautifulSoup?示例片段:

<style type="text/css">

 p.c3 {text-align: justify}

 p.c2 {text-align: left}

 p.c1 {text-align: center}

</style>

完美的输出将是:

cssdict = {
    'p.c3': {'text-align': 'justify'},
    'p.c2': {'text-align': 'left'},
    'p.c1': {'text-align': 'center'}
}

尽管这样可以:

L = [
    ('p.c3', {'text-align': 'justify'}),  
    ('p.c2', {'text-align': 'left'}),    
    ('p.c1', {'text-align': 'center'})
]

问题答案:

BeautifulSoup本身根本不解析CSS样式声明,但是您 可以 提取这些部分,然后使用专用的CSS解析器对其进行解析。

根据您的需求,有多个CSS解析器可用于python。我会选择cssutils(需要python
2.5或更高版本(包括python 3)),它在支持方面是最完整的,并且也支持内联样式。

其他选项是css-py和tinycss。

抓取并解析所有样式部分(例如cssutils的示例):

import cssutils
sheets = []
for styletag in tree.findAll('style', type='text/css')
    if not styletag.string: # probably an external sheet
        continue
    sheets.append(cssutils.parseStyle(styletag.string))

随着cssutil然后你可以结合这些,进口的决心,甚至把它取外部样式表。



 类似资料:
  • 这是我第一次使用网页抓取。到目前为止,我能够导航并找到我想要的HTML部分。我也可以打印出来。问题是只打印文本,这不起作用。我在尝试时遇到以下错误: 这是我的代码:

  • 问题内容: 我正在尝试学习一些漂亮的汤,并从一些iFrame中获取一些html数据-但到目前为止,我还没有取得很大的成功。 因此,解析iFrame本身似乎不是BS4的问题,但是我似乎并没有从中获得嵌入的内容-不管我做什么。 例如,考虑下面的iFrame(这是我在chrome开发人员工具上看到的): 我要提取的内容在哪里。 但是,当我使用以下BS4代码时: 我得到: 换句话说,我得到的iFrame中

  • 如何使用JSOUP从html字符串获取图标路径? 我找到了在网页上添加favicon的不同方法- (在谷歌) 我能得到的第一个方法是使用doc。选择(“html头元”) 但我无法选择链接标签

  • 问题内容: 我正在解析CSS,以便从链接的样式表中获取URL。这是一个Java应用程序。( 我尝试使用CSSParser( http://cssparser.sourceforge.net/ ),但是,它在解析时会默默地删除许多规则。) 所以我只是在使用Regex。我想要一个仅获取URL的正则表达式,并且足够健壮以应对来自狂野的真实CSS: 你明白了。这是在Java的regex实现中( 不是我的最

  • 在Spring,我找到了一个给定url的MockMVC: 太好了。现在我想看看这将返回的html是什么。我该怎么做?我想要它的字符串表示(即String theHtml=...),这样我就可以解析它并在我的测试中检查它。

  • 问题内容: 我正在使用beautifulSoup从网站提取数据。每当您重新加载页面时,该网站上的文本都会更改,因此基本上,我希望能够将重点放在类名上作为静态变量,因为文本是动态的。 它打印出 当页面重新加载,我仍然有重点的领域,但我不知道如何只打印文本(在这种情况下是:4) 一旦解决了这个问题,我还有另一个问题:如果该类包含多个标签,是否有办法获取更多静态数据,以确保它只打印我在搜索的文本,而不是