2013-06-03 64 views
0

我試圖從findAll排除某些結果在美麗的湯。我想排除有媒體=打印屬性排除findAll結果集

這裏的樣式表的鏈接是我的代碼:

from bs4 import BeautifulSoup 
import urllib2 

url = "http://worldwildlife.org/" 

request = urllib2.Request(url) 
opener = urllib2.build_opener() 
f = opener.open(request) 

html = f.read() 
soup = BeautifulSoup(html) 
css_files = soup.findAll('link',{'rel':'stylesheet'}) 

print css_files 

回報:

[<link href="/assets/application-b275a30a2c6726e3fabb10517f7cb812.css" media="all" rel="stylesheet" type="text/css"/>, <link href="/assets/print-f0ba9e9b867691bb2fea40b2ab4e78d7.css" media="print" rel="stylesheet" type="text/css"/>] 

我已經試過各種方法,我很明顯新python任何幫助將不勝感激。

回答

2

修改您的搜索線爲:

css_files = soup.findAll('link',{'rel':'stylesheet', 'media': lambda L: L != 'print'}) 
# [<link href="/assets/application-b275a30a2c6726e3fabb10517f7cb812.css" media="all" rel="stylesheet" type="text/css"/>] 
+0

謝謝 - 我顯然有一些研究,做拉姆達。我已經看過好幾次了,所以現在是時候知道它是什麼了!但是,謝謝你的工作。 – user1683285

+0

@ user1683285它創建一個簡單的可調用對象。由於'bs4'允許可調參數作爲其選擇標準,因此兩者可以很好地結合在一起 –