2024-10-01 11:39:38 发布
网友
我需要网页内容。我需要从中获取一些数据。它看起来像:
< div class="deg">DATA< /div>
据我所知,我必须使用正则表达式,但我不能选择一个。在
我尝试了下面的代码,但没有任何结果。请纠正我:
regexHandler = re.compile('(<div class="deg">(?P<div class="deg">.*?)</div>)') result = regexHandler.search( pageData )
您可以在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部分:
然后运行匹配并获得结果:
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*。在
<div class="deg">DATA</div>
\s*
您可以在Python中使用简单的字符串函数,而不需要regex
我的方法是,找点事来分头。在上面,我对“>;”分开了。然后检查拆分的项,检查“deg”,并在它后面获取该项,因为“deg”出现在要获取的数据之前。当然,这并不是唯一的方法。在
如果要将div标记包含在匹配项中:
如果不希望包含div标记,则只需包含DATA部分:
^{pr2}$然后运行匹配并获得结果:
我建议使用一个好的HTML解析器(例如BeautifulSoup——但是出于您的目的,即使用格式良好的HTML作为输入,Python标准库(如HTMLParser)附带的解析器也应该可以很好地工作),而不是使用原始REs来解析HTML。在
如果您想继续使用原始RE方法,则模式:
看起来是从字符串“
<div class="deg">DATA</div>
”中获取字符串“DATA”的最简单方法——假设这就是您所追求的。您可能需要在需要容忍可选空白的位置添加一个或多个\s*
。在相关问题 更多 >
编程相关推荐