使用与Python正则表达式模式在HTML页面搜索(Search in HTML page usin

2019-10-16 22:50发布

我试图找到一个HTML页面内的字符串与已知的模式。 例如,在下面的HTML代码:

<TABLE WIDTH="100%">
<TR><TD ALIGN="LEFT" width="50%">&nbsp;</TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM WIDTH=50%><FONT SIZE=-1>( <STRONG>1</STRONG></FONT> <FONT SIZE=-2>of</FONT> <STRONG><FONT SIZE=-1>1</STRONG> )</FONT></TD></TR></TABLE>
<HR>
<TABLE WIDTH="100%">
<TR>    <TD ALIGN="LEFT" WIDTH="50%"><B>String 1</B></TD>
    <TD ALIGN="RIGHT" WIDTH="50%"><B><A Name=h1 HREF=#h0></A><A  HREF=#h2></A><B><I></I></B>String</B></TD>
</TR>
<TR><TD ALIGN="LEFT" WIDTH="50%"><b>String 2.</B>
</TD>
<TD ALIGN="RIGHT" WIDTH="50%"> <B>
String 3
</B></TD>
</TR>
</TABLE>
<HR>
<font size="+1">String 4</font><BR>
...

我想找到字符串4,我知道这将永远是之间

<HR><font size="+1">
</font><BR>

我怎么能搜索使用RE字符串?

编辑:

我试过以下,但没有成功:

p = re.match('<HR><font size="+1">(.*?)</font><BR>',html)

谢谢。

Answer 1:

re.findall(r'<HR>\s*<font size="\+1">(.*?)</font><BR>', html, re.DOTALL)

findall正在恢复与在正则表达式的括号之间一切缴获的列表。 我用re.DOTALL这么点也抓住线结束。

我用\s* ,因为我不知道是否会有任何空白。



Answer 2:

这工作,但可能不是很强劲:

import re
r = re.compile('<HR>\s?<font size="\+1">(.+?)</font>\s?<BR>', re.IGNORECASE)
r.findall(html)

你会更好使用适当的HTML解析器。 BeautifulSoup是优秀的,易于使用。 看看它。



Answer 3:

re.findall(r'<HR>\n<font size="\+1">([^<]*)<\/font><BR>', html, re.MULTILINE)


文章来源: Search in HTML page using Regex patterns with python