2011-09-29 11 views
0

我試圖解析這個頁面 http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary 和得到公正的如何解析網站的詞彙部分與BeautifulSoup剝HTML標籤

標題, 說明

每個部分,這就是它,沒有標籤。 我解析頁面並嘗試搜索所有<title><p>標記,但它不會產生正確的結果。

我使用Python 2.7和BeautifulSoup 3-2-0

這裏是我的代碼示例:

import urllib2, sys 
address = sys.argv[1] 
html = urlib2.urlopen(http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary).read() 
from BeautifulSoup import BeautifulSoup 
soup = BeautifulSoup(html) 
def printText(tags): 
     for tag in tags: 
       if tag._class_==NavigableString: 
         print tag, 
       else: 
         printText(tag) 
     print "" 
printText(soup.findALL("p")) 
print "".join(soup.findALL("p", text=re.compile("."))) 

回答

0

我不是很確定你要找的東西,但我懷疑你正在尋找從這個頁面中獲得術語和定義。尋找<標題>和<p>標籤不是你真正需要的。您應該查找使標籤唯一的屬性。在這種情況下,查看<範圍>標記顯示有一個類屬性唯一地標記這些術語。這可以用來隔離你需要的部分。我建議仔細查看find/findAll的文檔。以下是一些可以幫助您實現最佳方式的代碼。

from BeautifulSoup import BeautifulSoup 
import urllib 

url = 'http://www.lib.uts.edu.au/about-uts-library/corporate-information/library-glossary' 
soup = BeautifulSoup(urllib.urlopen(url)) 

paragraphs = [x.parent for x in soup.findAll(name='span',attrs={'class':'definition'}) if x.parent.name == 'p'] 
for p in paragraphs: 
    name = p.find(name='span',attrs={'class':'definition'}).text 
    text = p.text.replace(name,'') 
    print '-'*80 
    print name 
    print text