Python解析字符串

2024-04-18 23:59:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

再说一次,也许这是一件很容易做的事,只是想不通。提前谢谢!在


Tags: 方法字符串答案html数字页面visitjavascript
3条回答

如果您使用的是beauthoulsoup,那么只需获得onclick字符串非常简单,这将使这一点变得更简单。但这里有一个非常粗糙的方法:

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

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

其他选项:使用搜索抓取一系列的数字然后取第二组。或使用搜索匹配子串后的一系列数字,其中子串是<a href="javascript:void(0);" onclick="viewsite(。在

编辑:听起来你在用beauthoulsoup。在这种情况下,假设您有一个表示a标记的对象。假设对象名为a

^{pr2}$
import re
r = re.compile('viewsite\((\d+)\)')
r.findall(s)

这将专门查找viewsite()的全数字参数。与Andrew的答案相比,您可能更喜欢这个,因为如果其他数字出现在HTML字符串中,您将开始得到错误的结果。在

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

相关问题 更多 >