• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Perl解析当当网图书信息页面

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

功能描述:

  • 首先判断html文件是否为当当图书的页面,不是则不处理
  • 把图书标题,价格,作者,出版社等信息抽取出来存入文件
  • perl程序运行命令:perl  programfile    html_file_list

原代码奉上:

#!/usr/bin/perl
use HTML::Element;
use HTML::TreeBuilder;
use HTML::Parser;

open DATAFH,">>data" || die "open file failed:$!";
select DATAFH;
foreach my $file_name (@ARGV) {
	unless(-e $file_name){
		print "$file_name文件不存在.\n";
		next;
	}
	##首先判断文件编码是不是UTF-8,如果不是要转换成UTF-8,因为我发现perl的HTML模块好像只能处理UTF-8编码的文件,处理GBK文件时会出现中文乱码。而我们从网上下载的页面几乎都是GBK编码。
	system "enca","-L","zh_CN","-x","UTF-8",$file_name;		##用enca比用iconv的好处在于不需要管原文件是什么编码(即使本来就UFTF-8编码),直接转换成UTF-8编码就是了。
    my $root = HTML::TreeBuilder->new;
    $root->parse_file($file_name);
    $title=$root->find_by_tag_name('title');
    $str_title=$title->as_text();
    if($str_title=~qr/图书 - 当当网$/){
    	print "网页标题:$str_title\n";
    	$div_h1=$root->look_down("_tag","div","class","h1_title book_head");
    	$h1=$div_h1->look_down('_tag','h1');
    	print "图书名称:",$h1->as_text(),"\n";
    	$div_info=$root->look_down("_tag","div","class","info book_r");
    	$price_d=$div_info->look_down("_tag","p","class","price_d");
    	print $price_d->as_text(),"\n";
    	$price_m=$div_info->look_down("_tag","p",
    								"class","price_m");
    	foreach my $node_r ($price_m->content_refs_list){
    		next if ref $$node_r;
    		print $$node_r,"\n";
    	}
    	$div_detail=$div_info->look_down("_tag","div","class","book_detailed","name","__Property_pub");
    	@elements=$div_detail->find_by_tag_name('p');
    	foreach(@elements){
			print $_->as_text(),"\n";
		}
		$clear=$div_detail->look_down("_tag","ul","class","clearfix");
		@lis=$clear->content_list();
		@spans=$lis[0]->content_list();
		print $spans[1]->as_text(),"\n";
		@spans=$lis[2]->content_list();
		print $spans[1]->as_text(),"\n";
		print $spans[2]->as_text(),"\n";
		print "********************************************\n";
		$|=1;
    }
    else{
		print STDOUT "$file_name不是当当网图书信息页面。\n";
		next;
	}
    $tree = $root->delete;
}
close DATAFH;

输出文件里的内容:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
实现Nginx通过反代对Java环境和Perl环境的支持(附Tomcat)发布时间:2022-07-22
下一篇:
12-Perl时间日期发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap