0

我有一堆 HTML,我每周从一个站点下载一次,需要从中获取一些信息,但不知道从哪里开始。

我有大约 100 个这样的文件在一个文件中重复,并且只想从中获取 2 行。

number2 - 计算机
3 天前 6 月 22 日,12
11,589 个文件 / 4,363 MB

<td width="242"><div align="left"><span class="style9">
<span class="style9"><img src="pic.pn" width="32" height="32" border="0" style="vertical-align:text-top;" />number2 &nbsp;&#8209;&#8209;computer</span><br />
.....
<div align="left">License:<br />Backup:<br />Files:</div></td><td width="186" valign="top" nowrap><div align="left" nowrap>
<span class="black" nowrap><span class="black">Paid&nbsp;Unlimited</span>
<br />3&nbsp;days&nbsp;ago&nbsp;on&nbsp;Jun&nbsp;22,&nbsp;12<br />11,589 files / 4,363&nbsp;MB</span></td>
<td width="92" valign="top">&nbsp;</td></tr>
.....
</div></td>
4

2 回答 2

0

您需要做的是在文本的每一行后面放置一个 '\n',(如果您将文件作为字符串加载,它已经是那样了。)然后您需要在文本中搜索该部分并保存更短形式的文本。如果搜索和文本被正确的字符串替换,下面的脚本应该可以工作

#insurt text to search and to be searched
search = '<td width="242"><div align="left"><span class="style9">\n<span class="style9"><img         src="pic.pn" width="32" height="32" border="0" style="vertical-align:text-top;" />number2 &nbsp;&#8209;&#8209;computer</span><br />\n.....\n<div align="left">License:<br />Backup:<br />Files:</div></td><td width="186" valign="top" nowrap><div align="left" nowrap>\n<span class="black" nowrap><span class="black">Paid&nbsp;Unlimited</span>\n<br />3&nbsp;days&nbsp;ago&nbsp;on&nbsp;Jun&nbsp;22,&nbsp;12<br />11,589 files / 4,363&nbsp;MB</span></td>\n<td width="92" valign="top">&nbsp;</td></tr>\n.....\n</div></td>\n'


text = 'a\n'+98*search+'\nb'


changed = 0
for x in range(len(text)):
  if text[x:x+len(search)] == search:
    if changed >= 2:
       text = text[0:x]+' '+text[x+len(search):] # to place a replacement text, switch ' ' for 'replacement text'
    changed += 1


print(text)
于 2013-12-28T09:14:01.120 回答
0

首先,尝试从字符串中删除所有 HTML 标记。

>>> import re
>>> def remove_html_tags(data):
...     p = re.compile(r'<.*?>')
...     return p.sub('', data)
...
>>> stripped = remove_html_tags(unescape(html_source))
>>> stripped
u'\nnumber2 \xa0\u2011\u2011computer\n.....\nLicense:Backup:Files:\nPaid\xa0Unlimited\n3\xa0days\xa0ago\xa0on\xa0Jun\xa022,\xa01211,589 files / 4,363\xa0MB\n\xa0\n.....\n'

然后是正常搜索/拆分/重新匹配的问题

unescape感谢 Fredrik Lundh

这应该让你继续前进。

于 2012-06-25T11:15:01.500 回答