【发布时间】:2012-10-02 12:31:37
【问题描述】:
我有一些<tr>s,像这样:
<tr align=center><td>10876151</td><td><a href=userstatus?user_id=yangfanhit>yangfanhit</a></td><td><a href=problem?id=3155>3155</a></td><td><font color=blue>Accepted</font></td><td>344K</td><td>219MS</td><td>C++</td><td>3940B</td><td>2012-10-02 16:42:45</td></tr>
<tr align=center><td>10876150</td><td><a href=userstatus?user_id=BandBandRock>BandBandRock</a></td><td><a href=problem?id=2503>2503</a></td><td><font color=blue>Accepted</font></td><td>16348K</td><td>2750MS</td><td>G++</td><td>840B</td><td>2012-10-02 16:42:25</td></tr>
我想获取不带html标签的内容,比如:
yangfanhit
3155
Accepted
344K
219MS
C++
3940B
2012-10-02 16:42:45
现在我使用下面的代码来处理它:
response = urllib2.urlopen('http://poj.org/status', timeout=10)
html = response.read()
response.close()
pattern = re.compile(r'<tr align.*</tr>')
match = pattern.findall(html)
pat = re.compile(r'<td>.*?</td>')
p = re.compile(r'<[/]?.*?>')
for item in match:
for i in pat.findall(item):
print p.sub(r'', i)
print '================================================='
我是 regex 的新手,也是 python 的新手。那么你能推荐一些更好的方法来处理它吗?
【问题讨论】:
-
不要使用 RegEx 解析 HTML。小马托尼会把你活活吃掉。请改用适当的解析器。 lxml 内置于 Python 中。