如何才能识别并提取所有 CSS链接?
方法 1:使用正则表达式
import re
css_url = """
body {
background-image: url("image.jpg");
background-image: linear-gradient(red, blue);
}
"""
links = re.findall(r"\s*\w+\s*:\s*(?:url|url\s*\(.*?\))", css_url, flags=re.IGNORECASE)
print(links)
方法 2:使用 Beautiful Soup
from bs4 import BeautifulSoup
html_doc = """
"""
soup = BeautifulSoup(html_doc, "html.parser")
css_links = [style.get("src") for style in soup.find_all("style")]
print(css_links)
方法 3:使用 PyQuery
import pyquery as pq
html_doc = """
"""
css_links = pq(html_doc).css("body > style::attr(src)")
print(css_links)
结果
['url("image.jpg")', 'url("image.jpg")']
注意
- 使用正则表达式可能会有误差,因为 CSS 中的背景图像可能包含嵌套的链接。
- 使用 Beautiful Soup 或 PyQuery 可能会更易于使用,但它们可能对 HTML 文档格式有所敏感。