2012-06-25 38 views
0

我有一堆HTML,我每周从网站下载一次,需要抓取它的一些信息,不知道从哪里开始。python找到一个字符串&前后的所有内容

我有大约100个这样的文件重复,只想抓住2条线。

NUMBER2 ‑ ‑计算机
天 前 上 君  22, 11589文件/ 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> 
+5

[你尝试过什么?](http://whathaveyoutried.com) – millimoose

+2

你想要一个HTML解析器 - 这种情况下,我会建议BeautifulSoup。 –

+0

@millimoose:显然他到目前为止还没有尝试过任何东西,比如“不确定从哪里开始” –

回答

0

首先,尝试删除所有的一切e字符串中的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感谢弗雷德里克Lundh开发

这应该让你去。

0

你需要做的是在文本的每一行后面加一个'\ n'(如果你把文件加载为字符串,它就已经是这样了)。比你需要搜索那部分文本并以较短的形式保存文本。 schould工作下的脚本,如果搜索和文本是由正确的字符串替换

#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) 
相关问题