Python和网页标签正则表达式

2024-10-01 11:39:38 发布

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

我需要网页内容。我需要从中获取一些数据。它看起来像:

< div class="deg">DATA< /div>

据我所知,我必须使用正则表达式,但我不能选择一个。在

我尝试了下面的代码,但没有任何结果。请纠正我:

regexHandler = re.compile('(<div class="deg">(?P<div class="deg">.*?)</div>)')
result = regexHandler.search( pageData )

Tags: 数据代码divresearchdataresultclass
3条回答

您可以在Python中使用简单的字符串函数,而不需要regex

mystr = """< div class="deg">DATA< /div>"""
if "div" in mystr and "class" in mystr and "deg" in mystr:
    s = mystr.split(">")
    for n,item in enumerate(s):
        if "deg" in item:
            print s[n+1][:s[n+1].index("<")]

我的方法是,找点事来分头。在上面,我对“>;”分开了。然后检查拆分的项,检查“deg”,并在它后面获取该项,因为“deg”出现在要获取的数据之前。当然,这并不是唯一的方法。在

如果要将div标记包含在匹配项中:

regexpHandler = re.compile('(<div class="deg">.*?</div>)')

如果不希望包含div标记,则只需包含DATA部分:

^{pr2}$

然后运行匹配并获得结果:

result = regexHandler.search( pageData )
matchedText = result.groups()[0]

我建议使用一个好的HTML解析器(例如BeautifulSoup——但是出于您的目的,即使用格式良好的HTML作为输入,Python标准库(如HTMLParser)附带的解析器也应该可以很好地工作),而不是使用原始REs来解析HTML。在

如果您想继续使用原始RE方法,则模式:

r'<div class="deg">([^<]*)</div>'

看起来是从字符串“<div class="deg">DATA</div>”中获取字符串“DATA”的最简单方法——假设这就是您所追求的。您可能需要在需要容忍可选空白的位置添加一个或多个\s*。在

相关问题 更多 >