2012-09-09 56 views
15

我想用Python解析一個html文件,並且我使用的模塊是beautifulsoup。beautifulsoup findAll find_all

我用它之後,一些奇怪happened.It據說功能「find_all」是

一樣「的findAll」,但我已經試過他們兩個。但它是不同的。

誰能告訴我不同​​嗎?

import urllib, urllib2, cookielib 
from BeautifulSoup import * 
site = "http://share.dmhy.org/topics/list?keyword=TARI+TARI+team_id%3A407" 

rqstr = urllib2.Request(site) 
rq = urllib2.urlopen(rqstr) 
fchData = rq.read() 

soup = BeautifulSoup(fchData) 

t = soup.findAll('tr') 
print t 
+2

您使用哪個beautifulsoup的版本?如果你應該使用BS4,那麼導入應該是'from bs4 import BeautifulSoup'。見http://www.crummy.com/software/BeautifulSoup/bs4/doc/#porting-code-to-bs4 – marchelbling

+1

有什麼區別?我的意思是,你說你使用了兩種,你看到了不同。你可以發佈一些顯示不同行爲的輸出嗎?或者你問爲什麼有兩種方法可以做同樣的事情?在這種情況下,Martijn Pieters是正確的。 – Bakuriu

+0

find_all:找不到模塊 findAll:它找到了html代碼的幾個部分。 – Oberon

回答

33

在BeautifulSoup第4版中,方法完全相同;混合大小寫版本(findAllfindAllNext,nextSibling等)都已重命名爲符合Python style guide,但舊的名稱仍可用於使移植更容易。查看Method Names獲取完整列表。

在新的代碼,你應該使用小寫版本,所以find_all

在您的例子但是,你正在使用BeautifulSoup 3版(停產自2012年3月,使用如果你可以幫忙的話),只有findAll()可用。未知屬性名稱(例如.find_all,僅在BeautifulSoup 4中可用)被視爲按照該名稱搜索標籤。文檔中沒有<find_all>標記,因此返回None