如何使用BeautifulSoup从内联样式中提取CSS属性

发布于 2021-01-29 14:58:18

我有这样的事情:

<img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/>

我正在使用beautifulsoup解析html。有没有办法拉出“背景” css属性中的“ URL”?

关注者
0
被浏览
110
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您有两种选择-快速,肮脏或正确的方法。快速而肮脏的方式(如果更改标记,则很容易中断)看起来像

    >>> from BeautifulSoup import BeautifulSoup
    >>> import re
    >>> soup = BeautifulSoup('<html><body><img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/></body></html>')
    >>> style = soup.find('img')['style']
    >>> urls = re.findall('url\((.*?)\)', style)
    >>> urls
    [u'/theRealImage.jpg']
    

    显然,您必须使用它才能使其与多个img标签一起使用。

    正确的方法是,建议有人在CSS字符串上使用正则表达式:)会很糟糕,因此使用CSS解析器。cssutils是我刚刚在Google上找到的一个库,可以在PyPi上找到,它看起来可以完成这项工作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看