从标签中提取数字

时间:2017-03-01 17:54:05

标签: python regex beautifulsoup

我们说我有这样的标签:

<div class="user-details"><a href="/users/619/jon-hu">Jon Hu</a>

我想提取用户ID或类似内容的619

我可以这样做,结果如下:

question.select('.user-details a')[0]
>>> <a href="/users/619/jon-hu">Jon Hu</a>

如何解压619?它没有单独的标签,所以我认为我必须使用正则表达式,我不是很擅长。

1 个答案:

答案 0 :(得分:1)

您应该首先通过将元素视为字典来提取href属性值。然后,您可以应用正则表达式来提取用户ID:

a = question.select_one('.user-details a')
href = a["href"]

match = re.search(r"/users/(\d+)", href)
if match:
    user_id = match.group(1)
    print(user_id)
else:
    print("No user ID found in '%s'." % href)

其中(\d+)捕获组,可捕获一个或多个连续数字。

另请注意使用.select_one()方法代替.select()[0]