请教如何抓取网页文本标签中的信息?

请教如何抓取网页文本标签中的信息?

chinaunix的各位大虾好,在这里注册已经很久了,但发帖问问题还是第一次,在此提前感谢帮助我的朋友们~

我的毕业设计中有一个模块是抓取网页文本,提取信息。先用LWP模块获取到了需要的文本,然后需要拿到标签中的一些信息,我就不知道怎么做了。

例如有文本:

......
     <td align="center" class="xiax"><span class="text_6">50.00元</span></td>
        <td align="center" class="xiax"><span class="text_2"> 85%</span></td>
        <td align="center" class="xiax"><span class="text_2">0</span></td>
        <td align="center" class="xiax"><span class="text_2">辽宁阜新</span></td>
        <td align="center" class="xiax"><span class="text_2">辽 工 大</span></td>
        <td align="center" class="xiax"><span class="text_7">2008-4-22 12:08:00</span></td>
......

我要把这些信息抓取出来并作为一个条目写入mysql数据库中,也不知道使用什么模块或者方法,希望大虾来解答~~

谢谢各位!

把文本当作DOM来处理嘛?
正则表达式


QUOTE:
原帖由 bjbs_270 于 2008-4-28 10:38 发表
正则表达式

嗯好的谢谢,终于有个方向了。

但现在发现文本非常大而且杂,中间起码有20个上面这样的条目,我需要怎么把他们找出来呢?
各位大虾救命

我现在又想把抓取到的html文本转换成xml文本,然后再使用XML:OM模块对它进行操作。

现在一 use XML:OM 就出现 unrecognized escape ....../lib/XML/DOM.pm line 136

是不是这个module还需要先安装别的module啊


而且在CPAN也查不到一些靠谱的 HTML 转 XML 的 module


各位大虾救命...
现在使用HTML:OMbo 也出现了上面的错误:

unrecognized escape ....../lib/XML/DOM.pm line 136

看来这个DOM.pm确实有问题,我应该卸载哪个模块重新安装来修正这个错误呢?
针对你给的这些文本,可以这么抓取

#!/usr/bin/perl

use strict;
use warnings;

while (<DATA>) {
        chomp;
        print $1 . "\n" if m{<td [^>]*><span [^>]*>(.*)</span></td>};
}

__DATA__
<td align="center" class="xiax"><span class="text_6">50.00元</span></td>
<td align="center" class="xiax"><span class="text_2"> 85%</span></td>
<td align="center" class="xiax"><span class="text_2">0</span></td>
<td align="center" class="xiax"><span class="text_2">辽宁阜新</span></td>
<td align="center" class="xiax"><span class="text_2">辽 工 大</span></td>
<td align="center" class="xiax"><span class="text_7">2008-4-22 12:08:00</span></td>


QUOTE:
原帖由 cobrawgl 于 2008-4-28 15:03 发表
针对你给的这些文本,可以这么抓取

#!/usr/bin/perl

use strict;
use warnings;

while () {
        chomp;
        print $1 . "\n" if m{]*>]*>(.*)};
}

__DATA__
50.00元
85%
0
辽宁阜新
辽 工 大
...

感谢这位大虾,还有一个问题
如果文本中有很多个这种单元又该怎么办呢?
是不是可以用循环结构把这些单元先抓下来然后个个击破?

还有我安装了XML:OM 模块
但use的时候 总说dom.pm 错误怎么办?

还有这个页面的翻页是用javascript实现的,据说有模拟用户点击的模块,是哪一个呢???

我是个菜鸟,还请各位大虾包涵,多谢你们的帮助....
从你的需求上你就是想取出来资料的,再转成XML用什么XML。。。的没有必要

这个你变通一下不就可以了吗
cobrawgl 给你的例子是针对一行一行来的,你可以对整个文章进行匹配,
正则的写法就是在cobrawgl 的基础上构造出来一个单元

类似下面的结构
<tr><td>()</td><td>()</td><td>()</td><td>()</td><td>()</td><td>()</td></tr>

perl玩的不熟,PHP的这方面搞过。总之你从正则入手就对了

当然如果用的字符串函数用的好的话用一下substr加上strpos(php中的,perl中的我还不知道)也完全可以搞的定

推荐一下HTML::TreeBuilder
这两天刚研究出点眉目出来,非常赞的一个分析HTML的package