2015-10-06 71 views
1

與 「相對」, 「HREF」 和 「型」 的鏈接,就像:如何使用BeautifulSoup創建樣式表外部鏈接?

<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> 

正如你所看到的,那裏有一個空的鏈接標記。我已經試過這樣的,順便說一句:

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

回答

1

我們的創造直接,如:

>>> 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,所以創建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] 插入link標籤到HTML通過BeautifulSoup:

演示

>>> 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是類,它以html內容爲參數。

新建標籤:

使用new_tagBeautifulSoup類的方法來創建新的標籤。

使用attrsnew_tag的屬性添加class,href屬性及其值。

演示

>>> 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> 
+0

你是對的,但我不得不改變爲'self.soup.head.insert(0,new_soup.find( 「鏈接」))',因爲它是插入「html」標籤。 –

+0

@RederickDeathwill:我更新了答案,你能檢查它是否適合你? –

+0

@RederickDeathwill:再次更新答案,我認爲更新的內容對您有用。 :) –