我有一个非常烦人的问题,答案可能很简单,但我不能把2和2放在一起...
我有一个字符串示例,看起来像这样:
<a href="javascript:void(0);" onclick="viewsite(38903);" class="followbutton">Visit</a>
每次加载页面时,数字 38903 会有所不同。每次加载页面时,我都需要一种能够解析这些数字的方法。我已经足够抓住并包含上面的HTML代码,但不能只抓取数字。
同样,这可能是一件非常容易的事,只是无法弄清楚。提前谢谢!
答案 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'