楼上的说的对。
只能是针对性的写程序。
一般页面里的HTML代码都有一定的特征的。
仔细找找就可以搞定吧。

解决方案 »

  1.   

    首先谢谢大家!
       1 . 我只是想要是读取大页面,那不是很慢!
       2 . 我还想问个就是在抓取了页面中有好几个表格,我要怎样直接去读取这个表格的内容。
       3 . 大家能不能给个抓取的例子看看。(不是整个网面,是网页中的某个块),就如我上面说的例子,抓取 www.csdn.net 中的"头条新闻”
      

  2.   

    我用了两种方法解决了,
        1)一种是在php下,用页面输出来,然后用脚本来处理(表格)这样比较快,再通过xmlhttp发送到服务端存入数据库
       (思想:主要想借用js对页面表提取数据方便)
       如下是片段;
       function smsSend()
    {
    var m=0;
    var tbs = document.getElementsByTagName("table");
    var n =tbs[0].rows.length;
    for(var i=1;i<n;i++)
    {
    var content = tbs[0].rows[i].cells[1].innerText;
    var type  = "整蛊专家";
    var from  = "网易";
    var URL = "http://localhost/gether/xmlhttp.php?msg="+content+"&type="+type+"&from="+from;
    var oReq = new ActiveXObject("Microsoft.XMLHTTP");
    oReq.open("GET",URL,false);
    oReq.send();
    var result = oReq.status;

    if(result==200)
    {
    m++;
    }
    var oReq=null;
    }
    document.writeln(m);

    }
        但这种方法有一点不好,1是可能速度慢,2无法保证服务端是否正确插入到表中,3.要通过页面显显示出来,也就无法定时去完成
      2)  后来我就想到perl,
         (主要是perl的正则表达式的功能太强了)
         于是就有了这两个模块
      use LWP::UserAgent;
      use HTML::TableContentParser;
      $ua = new LWP::UserAgent;
      $ua->agent("AgentName/0.1 " . $ua->agent);my $req = new HTTP::Request GET => $URL;
    my $res = $ua->request($req);
    $html = $res->content;
    $p = HTML::TableContentParser->new();
    $tables = $p->parse($html);
      for $t (@$tables) {
        for $r (@{$t->{rows}}) {
                            print "Row: ";
          for $c (@{$r->{cells}}) {
            print "[$c->{data}] ";                          
          }                         
          print "\n";                       
        }
      }
       
      这种方法其实也是利用表格直接处理,这样大大地方便了页面分析(开始主要是想利用perl的正则表达式,不过也要少许用到)比较第1种方法;1.速度快,2.有保证,3.定时操作它
    这是我这周用到的一些东东,说的可能不清楚,但只希望对大家碰到相同的事情有所帮助