有没有一种方法可以使用BeautifulSoup从网页中提取CSS?

2024-10-03 15:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,它要求我查看网页,但要进一步使用HTML,我必须完整地看到它,而不是像一堆线和图片混合在一起。有没有一种方法可以使用BeautifulSoup解析CSS和HTML

这是我的密码:

from bs4 import BeautifulSoup


def get_html(url, name):
    r = requests.get(url)
    r.encoding = 'utf8'
    return r.text


link = 'https://www.labirint.ru/books/255282/'
with open('labirint.html', 'w', encoding='utf-8') as file:
    file.write(get_html(link, '255282'))

警告:页面:https://www.labirint.ru/books/255282/重定向到https://www.labirint.ru/books/733371/


Tags: 项目httpsurl网页gethtmlwwwru
1条回答
网友
1楼 · 发布于 2024-10-03 15:30:06

如果您的目标是真正解析css:

Beautiful soup将拖拽整个页面——它确实包括标题、样式、脚本、css和js中的链接等。我以前在pythonCodeArticle中使用过该方法,并针对您提供的链接重新测试了它

import requests
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin

# URL of the web page you want to extract
url = "ENTER YOUR LINK HERE"

# initialize a session & set User-Agent as a regular browser
session = requests.Session()
session.headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"

# get the HTML content
html = session.get(url).content

# parse HTML using beautiful soup
soup = bs(html, "html.parser")
print(soup)

通过查看汤的输出(它很长,我不会在这里粘贴)。。你可以看到这是一个完整的页面。只需确保粘贴到您的特定链接

现在,如果您想解析结果以获取所有css URL。。。。您可以添加以下内容:(我仍在使用上面描述得非常好的python代码文章链接中的部分代码)

# get the CSS files
css_files = []
for css in soup.find_all("link"):
    if css.attrs.get("href"):
        # if the link tag has the 'href' attribute
        css_url = urljoin(url, css.attrs.get("href"))
        css_files.append(css_url)
print(css_files)

输出的css_文件将是所有css文件的列表。现在,您可以单独访问这些样式,并查看正在导入的样式

注意:这个特定的站点有一个与html内联的混合样式(也就是说,他们并不总是使用css来设置样式属性…有时样式在html内容中)

这应该让你开始

相关问题 更多 >