8
我有这样的事情:如何拔出CSS从内嵌样式属性与BeautifulSoup
<img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/>
我使用beautifulsoup来解析HTML。有没有拉出“背景”CSS属性中的“网址”?
我有这样的事情:如何拔出CSS从内嵌样式属性与BeautifulSoup
<img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/>
我使用beautifulsoup来解析HTML。有没有拉出“背景”CSS属性中的“网址”?
你有几个选项 - 快速和肮脏或正确的方法。快速和肮脏的方式(如果该标记被改变,这将轻松突破)看起来像
>>> 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解析器。我刚刚在Google上找到并在PyPi上提供的图书馆,看起来可能会完成这项工作。
我包含了糟糕的正则表达式方法,因为我意识到大量的抓取工作是一次性的,但是如果这段代码要存活超过一天,它应该使用更好的东西,比如CSS解析器。上面的例子又是非常易碎的。 – 2012-02-14 04:20:42