2011-08-29 138 views
1

我已經問過一個問題,但它似乎我的探索並不清楚.. 所以,我再次詢問更詳細的信息。Beautifulsoup分析 - 詳細信息

<h2 class="sectionTitle"> 
CORPORATE HEADQUARTERS </h2> 
277 Park Avenue<br /> 
New York, New York 10172 
<br /><br />United States<br /><br /> 

我想只提取紐約州,紐約不郵政編碼10172

這是另外一個問題..

<h2 class="sectionTitle"> 
BACKGROUND</h2> 
He graduated Blabala 
</span> 

我想只提取畢業於BLABLA

我已經花了幾天,所以我覺得我可能會變得很瘋狂.. 請幫助我..感謝您提前給予您的善意幫助。

回答

0

你仍然需要更多的細節才能寫出一個好的正則表達式。

例如,如果要提取「公司總部」的第二行不總是存在的,它可以這樣寫郵政編碼:

>>> import re 
>>> html = ''' 
... <h2 class="sectionTitle"> 
... CORPORATE HEADQUARTERS </h2> 
... 277 Park Avenue<br /> 
... New York, New York 10172 
... <br /><br />United States<br /><br /> 
... 
... <h2 class="sectionTitle"> 
... BACKGROUND</h2> 
... He graduated Blabala 
... </span> 
... ''' 
>>> re.search('(?s)<h2 class="sectionTitle">\s*CORPORATE HEADQUARTERS\s*</h2>.*?<br />([^<>]+) \d+', html).group(1).strip() 
'New York, New York' 
>>> re.search('(?s)<h2 class="sectionTitle">\s*BACKGROUND\s*</h2>([^<>]+)', html).group(1).strip() 
'He graduated Blabala' 
+0

使用正則表達式解析HTML?這主意聽起來很不錯! –

+0

正則表達式更快更耐用。但是你需要非常小心。它只適用於特定的網站。 – eph

+0

非常感謝你!但我不知道爲什麼..它不起作用,它代表'NoneType'對象沒有屬性'group' – Willy

0

您應該使用tag.contents.split('\n') to split on lines and .rsplit('',1)`的組合來拆分最右邊最空格分隔的字符串。