2012-03-22 54 views
2

我想使用「text」屬性來分析一些嵌入在HTML中使用BeautifulSoup的文本。 與「發現」和「的findAll」,我注意到一些奇怪的事情,不能讓我的周圍爲什麼這樣的行爲頭部周圍玩...Python BeautifulSoup - 不同的結果找到並找到所有

import re 
import BeautifulSoup 

doc = "<html><head><title>Page title</title><title>Author name</title></head>" 
soup = BeautifulSoup(doc) 

# find test 
test1 = soup1.find('title',text=re.compile("Page")) 
print test1 # Returns "Page title" 

# findAll test 
test2 = soup1.findAll('title',text=re.compile("Page")) 
print test2 # Returns "[<title>Page title</title>, <title>Author name</title>]" 

在第二次測試,不應該解析器返回與第一個例子中的結果相同? 第二個測試應該返回所有'標題'標籤,其文本包含「Page」,但它也會返回第二個標題標籤。

這是預期還是我錯過了什麼?

回答

0

The documentation似乎表明textname參數是互斥的。但是,它說,如果指定text,則name將被忽略,在您的情況下,它似乎做相反的事情。

+0

我確實看到了這一點;我從來沒有遇到過使用find的問題,但也許是文檔中的一個錯誤。 – JasonB 2012-03-22 12:49:08

0

它適用於BeautifulSoup 3.2.0預期:

>>> soup.find('title',text=re.compile("Page")) 
u'Page title' 
>>> soup.findAll('title',text=re.compile("Page")) 
[u'Page title'] 
-1

兩個功能極爲相似,由它們定義BeautifulSoup文檔中證明:

find_All(tag, attributes, recursive, text, limit, keywords) 

find(tag, attributes, recursive, text, keywords)