Beautifulsoup解析 - 细节信息

时间:2011-08-29 20:43:36

标签: python 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

我已经度过了几天,所以我觉得我可能会变得疯狂.. 请帮帮我..谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您应该使用tag.contents.split('\n') to split on lines and。rsplit('',1)`的组合来仅拆分最右边的空格分隔字符串。

答案 1 :(得分:0)

你仍然需要更多细节来编写一个好的正则表达式。

例如,如果要提取第二行“CORPORATE HEADQUARTERS”而没有始终存在的邮政编码,可以这样写:

>>> 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'