我用了两种方法解决了, 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"; } }
1 . 我只是想要是读取大页面,那不是很慢!
2 . 我还想问个就是在抓取了页面中有好几个表格,我要怎样直接去读取这个表格的内容。
3 . 大家能不能给个抓取的例子看看。(不是整个网面,是网页中的某个块),就如我上面说的例子,抓取 www.csdn.net 中的"头条新闻”
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.定时操作它
这是我这周用到的一些东东,说的可能不清楚,但只希望对大家碰到相同的事情有所帮助