如何使用 BeautifulSoup 创建外部样式表 link?

How can I create a stylesheet external link using BeautifulSoup?

A link 与 "rel"、"href" 和 "type",就像:

<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css">

为了证明我已经尝试过,这是我失败的尝试:

def add_css(self, *links):
    if links:
        new_soup = BeautifulSoup("<link>")
        for link in links:
            new_soup.attrs["rel"] = "stylesheet"
            new_soup.attrs["href"] = link
            new_soup.attrs["type"] = "text/css"
        self.soup.head.insert(0, new_soup)
        self.update_document()

输出:

<html>
<head><html><head><link/></head></html>
<title></title>
</head>
<body></body>
</html>

如您所见,那里有一个空的 link 标签。顺便说一句,我试过这样:

webpage.add_css("css/bootstrap.min.css")

我们直接创建:

>>> new_soup = BeautifulSoup('<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css">')
>>> new_soup
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
>>> type(new_soup)
<class 'BeautifulSoup.BeautifulSoup'>
>>> 

和代码有关,有很多links,所以create link tag语句需要在for循环里面

    for link in links:
        new_soup = BeautifulSoup('<link rel="stylesheet" href="%s" type="text/css">'%link)
        self.soup.head.insert(0, new_soup)
    self.update_document()

[编辑 2] 通过 BeautifulSoup:

link 标签插入 html

演示:

>>> from BeautifulSoup import BeautifulSoup
# Parser content by BeautifulSoup.
>>> soup = BeautifulSoup("<html><head></head><body></body></html>")
>>> soup
<html><head></head><body></body></html>
# Create New tag.
>>> new_tag = BeautifulSoup('<link rel="stylesheet" href="css/bootstrap.min.css"/>')
>>> new_tag
<link rel="stylesheet" href="css/bootstrap.min.css" />
# Insert created New tag into head tag i.e. first child of head tag.
>>> soup.head.insert(0,new_tag)
>>> soup
<html><head><link rel="stylesheet" href="css/bootstrap.min.css" /></head><body></body></html>
>>> new_tag = BeautifulSoup('<link rel="stylesheet" href="css/custom1.css"/>')
>>> new_tag
<link rel="stylesheet" href="css/custom1.css" />
>>> soup.head.insert(0,new_tag)
>>> soup
<html><head><link rel="stylesheet" href="css/custom1.css" /><link rel="stylesheet" href="css/bootstrap.min.css" /></head><body></body></html>
>>> 

[编辑 3]

我认为你是从 bs4 模块导入 BeautifulSoup

BeautifulSoup 是 class 并且以 html 内容作为参数。

创建新标签:

使用 BeautifulSoup class 的 new_tag 方法创建新标签。

使用 new_tagattrs 属性 添加 classhref 属性及其值。

演示:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup("<html><head></head><body></body></html>")
>>> soup
<html><head></head><body></body></html>
>>> new_link =  soup.new_tag("link")
>>> new_link
<link/>
>>> new_link.attrs["href"] = "custom1.css"
>>> new_link
<link href="custom1.css"/>
>>> soup.head.insert(0, new_link)
>>> soup
<html><head><link href="custom1.css"/></head><body></body></html>