0

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

我有一个字符串示例,如下所示:

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

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

再说一次,这可能是一件很容易做的事情,只是想不通。提前致谢!

4

3 回答 3

1

如果您使用的是 BeautifulSoup,那么仅获取onclick字符串非常简单,这将使这更容易。但这是一种非常粗暴的方法:

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

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

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

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

import re
result = re.sub("\D", "", a['onclick'])
于 2012-05-08T05:36:29.737 回答
1
import re
r = re.compile('viewsite\((\d+)\)')
r.findall(s)

这将专门寻找 viewsite() 的全数字参数。您可能更喜欢 Andrew 的回答,因为如果 HTML 字符串中出现其他数字,您将开始得到不正确的结果。

于 2012-05-08T05:42:07.820 回答
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'
于 2012-05-08T05:41:44.137 回答