perl简单爬虫教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本教程是一个简单的perl爬虫例子,使用正则表达式来抓取网页的内容(主要是为了练习练习正则,真的爬虫都不用正则而是使用DOM).
本教程的测试网站为(/weather/101020100.shtml)目的是抓取网站上如下表中的天气信息。
最后的结果为
使用到的工具(firefox浏览器,firebug插件,perl)
教程开始
1:观察网页结构
1.1 我们使用firebug发现我们想要抓取的表格的HTML代码结构为
1.2 我们看到我们要的表格放在3个class=”yuBaoTable”的
my @find_all = ($re =~ /$start(.*?)$end/gs);
1.3 进入每段
my @find_all = ($re =~ /$start(.*?)$end/gs); ##将每天的天气信息存在一个数组中foreach (@find_all){
my @find_day = (/
foreach my $re1(@find_day){
if($re1 =~ />(\d{1,2}日星期.*?)<\/a>/s){
print "$1\n";
}
if($re1 =~ /(白天|夜间)/s){
printf "%8s:",$1;
}
if($re1 =~ /(晴|多云|阴|小雨|中雨|小到中雨|阵雨)/s){
printf "%5s ",$1;
} #30
if($re1 =~ /(高温|低温).*?\(.*?)<\/strong>/s){
printf "%8s:%5s",$1,$2 ;
}
if($re1 =~ /(西北风|北风|东北方|东风|东南风|南风|西南风|西风)/s){
printf "%8s:",$1;
}
if($re1 =~ />.*?(\d-\d级).*?<\/a>/s){
printf "%6s\n",$1;
}
}
}
}