gpt4 book ai didi

python - 使用 python 正则表达式抓取 html

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:24 25 4
gpt4 key购买 nike

我在 python 中使用正则表达式时遇到一些问题。我有一些 html 页面,其中包含对我有用的信息。在保存页面时,编码字符集是一种 iso...它保存了所有编码的德语典型字母,例如。例如 Früchte 及其子系列的“Fr%C3%BCchte”。html 的结构非常糟糕,因此唯一合理的方法是使用正则表达式来抓取它。

我在 python 中有这个正则表达式:

re.compile('<a\s+href="javascript.*?\(\'(\w+).*?\s.(\d+.+\d+).*?(.*)\'\)\">')

不幸的是,这并不完全是我想要的,因为编码的单词将仅被部分获取,例如。结果将是:

[('showSubGroups', "160500', 'Fr%C3", '%BCchte in Alkohol'),
('showSubGroups', '160400', "', 'Rumtopf"),
('showSubGroups', '160300', "', 'Spirituosen (Bio)"),
('showSubGroups', '160200', "', 'Spirituosen zur Verarbeitung in der Confiserie"),
('showSubGroups', '160100', "', 'Spirituosen, allgemein")]

也许我累了,但我看不出错误在哪里:

请使用 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>

最佳答案

试试这个:

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(代表“ü”)而言,它似乎只是来自 Latin 1 block 的 UTF-8,并添加了一些额外的“%”,因为如果您将 '%' 替换为 '\x',它就会解码:

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

0x00FC 是 ü 的 unicode。

关于python - 使用 python 正则表达式抓取 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com