在python中使用regex从HTML提取内容

2024-09-28 17:29:52 发布

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

我有这个HTML代码

<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">

这是一个刺痛,我想提取数据揭示前面的内容。 我做了一些正则表达式

p = re.compile('data-reveal=*')

但他们没有成功。我该怎么做? 谢谢。你知道吗


Tags: 代码datahtmlphonebuttonblockleftclass
3条回答

您正在为此使用the wrong tool。您应该使用类似BeautifulSoup的Html解析器。你知道吗

>>> from bs4 import BeautifulSoup
>>> doc = """<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">"""
>>> soup = BeautifulSoup(doc, 'html.parser')
>>> print(soup.find('a').get('data-reveal'))
۰۹۳۶۵۶۸۱۶۲۱

你不应该使用正则表达式,但我假设你想这样做,因为这是你在操作中所做的。我不完全确定你想要什么,所以这里是如何做我认为你可以问的任何一个

match everything in data-reveal:
data-reveal="(.+?)"
matches: \u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1

match EVERYTHING in front of data-reveal
data-reveal="(.+)
matches: \u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">

第一个正则表达式:https://regex101.com/r/jW9fT4/1

第二正则表达式:https://regex101.com/r/uZ7vX2/1

试试这个:

import re

html = """<a class="button block left icon-phone" data-reveal="\u06f0\u06f9\u06f3\u06f6\u06f5\u06f6\u06f8\u06f1\u06f6\u06f2\u06f1"  href="#">"""

regexObj = re.compile('data-reveal="(.*)" ')
result = regexObj.search(html);
print(result.group(1))

输出:

۰۹۳۶۵۶۸۱۶۲۱

相关问题 更多 >