Python - 解析字符串

时间:2012-05-08 05:31:05

标签: python parsing beautifulsoup

我有一个非常烦人的问题,答案可能很简单,但我不能把2和2放在一起...

我有一个字符串示例,看起来像这样:

<a href="javascript:void(0);" onclick="viewsite(38903);" class="followbutton">Visit</a>

每次加载页面时,数字 38903 会有所不同。每次加载页面时,我都需要一种能够解析这些数字的方法。我已经足够抓住并包含上面的HTML代码,但不能只抓取数字。

同样,这可能是一件非常容易的事,只是无法弄清楚。提前谢谢!

3 个答案:

答案 0 :(得分:1)

如果你正在使用BeautifulSoup,那么获取onclick字符串就变得非常简单,这将使这更容易。但这是一个非常粗糙的方法:

import re
result = re.sub("\D", "", html_string)[1:]

\D匹配所有非数字,因此这将删除字符串中不是数字的所有内容。然后取一片来摆脱javascript:void(0)中的“0”。

其他选项:使用re.search抓取一系列数字并使用第二组。或者使用re.search来匹配子字符串后面的一系列数字,其中子字符串是<a href="javascript:void(0);" onclick="viewsite(

编辑:听起来你正在使用BeautifulSoup。在这种情况下,大概你有一个代表a标签的对象。我们假设该对象名为a

import re
result = re.sub("\D", "", a['onclick'])

答案 1 :(得分:1)

import re
r = re.compile('viewsite\((\d+)\)')
r.findall(s)

这将专门查找viewsite()的全数字参数。您可能更喜欢安德鲁的答案,因为如果其他数字显示在HTML字符串中,您将开始得到不正确的结果。

答案 2 :(得分:0)

>>> import re
>>> grabbed_html = '''<a href="javascript:void(0);" onclick="viewsite(38903);" class="followbutton">Visit</a>'''
>>> re.findall(r'viewsite\((\d+)\);',grabbedhtml)[0]
'38903'