从网站源代码中提取文本

时间:2013-05-30 06:07:07

标签: python

我想从网站链接中提取信息:

http://www.website.com

有一个字符串出现几次:“STRING TO CAPTURE”,但我想捕获第一次出现。它将在以下结构中:

<td width="10%" bgcolor="#FFFFFF"><font class="bodytext9">1-Jun-2013</font></td>
<td width="4%" bgcolor="#FFFFFF" align=center><font class="bodytext9">Sat</font></td>
<td width="4%" bgcolor="#FFFFFF" align="center"><font class="bodytext9">TIME</font></td>
<td width="15%" bgcolor="#FFFFFF" align="center"><a class="black_9" href="link1">Some Text here</a></td>
<td width="5%" bgcolor="#FFFFFF" align="center"><font class="bodytext9"><img src="img/colors/pink.gif"></font></td>
<td width="5%" bgcolor="#FFFFFF" align="center"></td>
<td width="5%" bgcolor="#FFFFFF" align="center"><font class="bodytext9">Another Text</font></td>
<td width="5%" bgcolor="#FFFFFF" align="center"></td>
<td width="5%" bgcolor="#FFFFFF" align="center"><font class="bodytext9"><img src="img/colors/white.gif"></font></td>
<td width="15%" bgcolor="#FFFFFF" align="center"><a class="black_9" href="link2">Here is also Text</a></td>
<td width="15%" bgcolor="#FFFFFF" align="center"><a href="LINKtoWeb" class=list><u>STRING TO CAPTURE</u></a></td>
<td width="4%" bgcolor="#FFFFFF" align="center"><a target="_new" href="AnotherLink"><img src="img/img2.gif" border="0"></a></td>
</tr>

这是一种修复格式,其中12行开头,所有其他标记;我想提取每行中的文本,例如

1-Jun-2013
Sat
TIME
Some Text here
...
STRING TO CAPTURE

我还希望提取包含“STRING TO CAPTURE”的行的链接:

LINKtoWeb

在我看来,python可以很好地完成这个任务,但是我也太新了python才能让它工作,希望这里的python专家可以告诉我如何。 我不知道从哪里开始,四处寻找并发现这可能是解决方案:

use YAML;
my $data = Load(http://www.website.com);
say $data->{"<tr>"}->{"<td>"}->{"STRING TO CAPTURE"};

但我不知道如何处理这12行中的所有文本?

1 个答案:

答案 0 :(得分:1)

下载并安装BeautifulSoup然后

html = urllib.urlopen('http://www.website.com').read()
soup = BeautifulSoup.BeautifulSoup(html)
texts = soup.findAll(text=True)

def get_stuff(element):
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
        return False
    elif re.match('<!--.*-->', str(element)):
        return False
    return True

visible_texts = filter(get_stuff, texts)

来源 - BeautifulSoup Grab Visible Webpage Text