2017-04-02 44 views
0

我想要在Python中使用正则表达式来获取此HTML代码的4个表格的内容http://catedral.prefeitura.unicamp.br/cardapio.php。 的表格开始与 “[\吨\ n \ s]的” 并用 完成 “</TABLE> [\吨\ n \ s]的 </TD>” 我使用的代码如下:HTML正则表达式中使用Python进行多次最短匹配

menuSearchString = '<td align="left" valign="top">[\t\n\s]*<table width="[\d%]+" class="fundo_cardapio">([\s\S\d\t\n]+)<\/table>[\t\n\s]*<\/td>' 
menus = re.findall(menuSearchString,page) 
print menus 

但我无法得到表格的四个匹配。我认为我错在贪婪的配置和“?”运营商,我在最后尝试,但没有工作。

+2

你有没有试过'BeautifulSoup'? –

回答

0

你说得对。你的正则表达式的一部分是greedy这会导致你的正则表达式在一场比赛中捕获所有四个表。所有你需要做的就是使这部分lazy为了得到四场比赛。

更改您的正则表达式的这一部分:

[\s\S\d\t\n]+ 

要:

[\s\S\d\t\n]+? 

完整代码:

menuSearchString = '<td align="left" valign="top">[\t\n\s]*<table width="[\d%]+" class="fundo_cardapio">([\s\S\d\t\n]+?)<\/table>[\t\n\s]*<\/td>' 
menus = re.findall(menuSearchString,page) 
print menus 
+0

谢谢,它的工作。 我会检查BeautifulSoup库。谢谢你的提示。 – hildogjr