gpt4 book ai didi

python - 从样式 : background-url: with beautifulsoup and without regex? 中提取 url

转载 作者:行者123 更新时间:2023-12-03 22:47:59 27 4
gpt4 key购买 nike

我有:

<div class="image" style="background-image: url('/uploads/images/players/16113-1399107741.jpeg');"
我想获取 url,但是我不知道如何在不使用正则表达式的情况下做到这一点。甚至有可能吗?
到目前为止,我使用正则表达式的解决方案是:
url = re.findall('\('(.*?)'\)', soup['style'])[0]

最佳答案

您可以尝试使用 cssutils包裹。这样的事情应该工作:

import cssutils
from bs4 import BeautifulSoup

html = """<div class="image" style="background-image: url('/uploads/images/players/16113-1399107741.jpeg');" />"""
soup = BeautifulSoup(html)
div_style = soup.find('div')['style']
style = cssutils.parseStyle(div_style)
url = style['background-image']

>>> url
u'url(/uploads/images/players/16113-1399107741.jpeg)'
>>> url = url.replace('url(', '').replace(')', '') # or regex/split/find/slice etc.
>>> url
u'/uploads/images/players/16113-1399107741.jpeg'

尽管您最终需要解析出实际的 url,但此方法应该更能适应 HTML 中的更改。如果你真的不喜欢字符串操作和正则表达式,你可以用这种迂回的方式把 url 拉出来:
sheet = cssutils.css.CSSStyleSheet()
sheet.add("dummy_selector { %s }" % div_style)
url = list(cssutils.getUrls(sheet))[0]
>>> url
u'/uploads/images/players/16113-1399107741.jpeg'

关于python - 从样式 : background-url: with beautifulsoup and without regex? 中提取 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com