Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python正则表达式删除html_Python_Html_Screen Scraping - Fatal编程技术网

用python正则表达式删除html

用python正则表达式删除html,python,html,screen-scraping,Python,Html,Screen Scraping,我对python中的正则表达式有一些问题。我有一些html页面,其中包含对我有用的信息。在保存页面时,encodig字符集是一种iso。。。 它保存了所有德国典型的编码字母,如“Fr%C3%BCchte”等。 html的结构非常糟糕,所以唯一合理的方法就是使用正则表达式 我用python编写了这个正则表达式: re.compile('<a\s+href="javascript.*?\(\'(\w+).*?\s.(\d+.+\d+).*?(.*)\'\)\">') 也许我累了,但我看

我对python中的正则表达式有一些问题。我有一些html页面,其中包含对我有用的信息。在保存页面时,encodig字符集是一种iso。。。 它保存了所有德国典型的编码字母,如“Fr%C3%BCchte”等。 html的结构非常糟糕,所以唯一合理的方法就是使用正则表达式

我用python编写了这个正则表达式:

re.compile('<a\s+href="javascript.*?\(\'(\w+).*?\s.(\d+.+\d+).*?(.*)\'\)\">')
也许我累了,但我看不出错误在哪里:

hir html:

<td colspan="3" width="100%"><a href="javascript:sendForm('showSubGroups', '160500', 'Fr%C3%BCchte in Alkohol')">Früchte in Alkohol</a></td>
       </tr>
       <tr valign="top">
        <td colspan="3"><img src="NoName_Time_200843_93448%20-Dateien/pix.gif" height="5" width="1"></td>
       </tr>       <tr valign="top">
        <td colspan="3" width="100%"><a href="javascript:sendForm('showSubGroups', '160400', 'Rumtopf')">Rumtopf</a></td>
       </tr>
       <tr valign="top">
        <td colspan="3"><img src="NoName_Time_200843_93448%20-Dateien/pix.gif" height="5" width="1"></td>
       </tr>       <tr valign="top">
        <td colspan="3" width="100%"><a href="javascript:sendForm('showSubGroups', '160300', 'Spirituosen (Bio)')">Spirituosen (Bio)</a></td>
       </tr>
       <tr valign="top">
        <td colspan="3"><img src="NoName_Time_200843_93448%20-Dateien/pix.gif" height="5" width="1"></td>
       </tr>       <tr valign="top">
        <td colspan="3" width="100%"><a href="javascript:sendForm('showSubGroups', '160200', 'Spirituosen zur Verarbeitung in der Confiserie')">Spirituosen zur Verarbeitung in der Confiserie</a></td>
       </tr>
       <tr valign="top">
        <td colspan="3"><img src="NoName_Time_200843_93448%20-Dateien/pix.gif" height="5" width="1"></td>
       </tr>       <tr valign="top">
        <td colspan="3" width="100%"><a href="javascript:sendForm('showSubGroups', '160100', 'Spirituosen, allgemein')">Spirituosen, allgemein</a></td>
       </tr>
       <tr valign="top">
        <td colspan="3"><img src="NoName_Time_200843_93448%20-Dateien/pix.gif" height="5" width="1"></td>
       </tr>                </tbody></table>
            </td>
        </tr>

是解析html的绝佳库

一旦您从html中提取了HREF,那么使用正则表达式应该非常容易。

是解析html的一个很好的库

一旦您从html中提取了HREF,那么使用正则表达式应该非常简单。

尝试以下方法:

f = re.compile("sendForm\((?:.*), (.*), (.*)\)")
以文本作为输入,它将提供以下内容:

In [7]: f.findall(txt)
Out[7]:  [('160500', 'Fr%C3%BCchte in Alkohol'), ('160400', 'Rumtopf'), ('160300', 'Spirituosen (Bio)'), ('160200', 'Spirituosen zur Verarbeitung in der Confiserie'), ('160100', 'Spirituosen, allgemein')]
就解码
%C3%BC
(对于'u')而言,它似乎只是拉丁语1块中的UTF-8加上一些额外的“%”,因为如果将“%”替换为“\x”,它就会解码:

In [39]: '\xC3\xBC'.decode('utf-8')
Out[39]: u'\xfc'
0x00FC是u的unicode。请尝试以下操作:

f = re.compile("sendForm\((?:.*), (.*), (.*)\)")
以文本作为输入,它将提供以下内容:

In [7]: f.findall(txt)
Out[7]:  [('160500', 'Fr%C3%BCchte in Alkohol'), ('160400', 'Rumtopf'), ('160300', 'Spirituosen (Bio)'), ('160200', 'Spirituosen zur Verarbeitung in der Confiserie'), ('160100', 'Spirituosen, allgemein')]
就解码
%C3%BC
(对于'u')而言,它似乎只是拉丁语1块中的UTF-8加上一些额外的“%”,因为如果将“%”替换为“\x”,它就会解码:

In [39]: '\xC3\xBC'.decode('utf-8')
Out[39]: u'\xfc'

0x900FC是U.U.Poode的Unicode。

我建议使用ReGEX解析HTML-这类问题的典型响应-也许会考虑一个库,比如漂亮的Touple或LXML,允许使用XPath用于HTML PARSIGHMM,典型的响应似乎过于戏剧化。甚至可能是正确的,你不能用正则表达式解析HTML。但你可以从中提取信息。这就是这里的重点。@RolandSmith当然可以(至少对于有限的子集),关键是有更容易和更好的方法。对于这种问题,我建议使用ReGEX解析HTML,这可能是一个典型的反应,而不是考虑一个像漂亮的汤或LXML这样的库,它允许使用XPath用于HTML PARSIGHMM,典型的反应看起来过于戏剧化。甚至可能是正确的,你不能用正则表达式解析HTML。但你可以从中提取信息。这就是这里的重点。@RolandSmith当然可以(至少对于有限的子集),重点是有更简单更好的方法。