【发布时间】:2015-04-22 18:26:39
【问题描述】:
如何在 Python 中使用正则表达式解析 HTML 中的多行。我已经设法使用下面的代码在同一行上匹配模式。
i=0
while i<len(newschoollist):
url = "http://profiles.doe.mass.edu/profiles/general.aspx?topNavId=1&orgcode="+ newschoollist[i] +"&orgtypecode=6&"
htmlfile = urllib.urlopen(url)
htmltext = htmlfile.read()
regex = '>Phone:</td><td>(.+?)</td></tr>'
pattern = re.compile(regex)
value = re.findall(pattern,htmltext)
print newschoollist[i], valuetag, value
i+=1
但是,当我尝试识别像这样更复杂的 HTML 时...
<td>Attendance Rate</td>
<td class='center'> 90.1</td>
我得到空值。我相信问题出在我的语法上。我已经用谷歌搜索了正则表达式并阅读了大部分文档,但我正在寻找有关此类应用程序的一些帮助。我希望有人能指出我正确的方向。有没有类似 (.+?) 的组合可以帮助我告诉正则表达式跳下一行 HTML?
我希望 findall 找到 90.1 “出勤率 "
谢谢!
【问题讨论】:
-
简单的答案是使用 DOTALL 标志;正确答案是@Biffen 所说的:不要使用正则表达式!
标签: python html regex parsing web-scraping