使用Perl脚本自动提取保存网页中的数据

2015-11-02 09:39郭文彬
中国管理信息化 2015年20期
关键词:因特网网页文档

郭文彬

(上海大学 实验设备处,上海 200444)

使用Perl脚本自动提取保存网页中的数据

郭文彬

(上海大学 实验设备处,上海 200444)

Perl是Unix平台下的一种脚本语言,在其Win 32版本问世之后,Perl在Windows平台的网站编程与管理工作中得到广泛应用。使用Perl的OLE、LWP和Encode模块,可以方便将网页中的数据保存到Excel文件。

Perl;Excel;Win 32;LWP模块

Perl是语法简洁、文本处理功能强大的语言。CPAN(Comprehensive Perl Archive Network)是因特网上最大的Perl模块集散地,包含了现今公布的几乎所有的Perl模块。使用Perl的OLE、LWP和Encode模块包之前,应在本地计算机中安装这三个模块包。以常用的开发环境Strawberry为例说明安装方法:①安装模块,在命令行界面依次输入cpan Win 32::OLE,cpan Win 32::LWP cpan Win 32::OLE,cpan URL::Encode;②添加变量TERM=dump;③添加以下语句到环境变量PATH:c:myperlperlsitein和c:myperlperlin。

创建新Excel文档并设置格式

#!D:/Strawberry/perl/bin/perl.exe

use strict;

use Encode;##设置需要使用的包

use utf 8;

use Win 32::OLE;

use Win 32::OLE::Const 'Microsoft Excel';

use LWP::Simple;

use LWP::UserAgent;

my $destin_excelfile='C: gzyq.xls'; ##设置目标excel文档

my $destin_book=$Excel->Workbooks->Add();

my $destin_sheet=$destin_book->Worksheets("Sheet1");

$destin_sheet->Activate();

$destin_sheet->{Name}="gzyq";

使用perl自动登录网站

LWP是用于访问Web网站的Perl模块包。使用其中的UserAgent、Cookies、Response等类,可以很方便地模拟浏览器的行为。首先创建一个UserAgent对象my $ua=LWP::UserAgent->new();然后设置Cookies:my $cookie_jar = HTTP::Cookies->new(file =>'cookies.txt',autosave => 1,ignore_discard => 1,),$ua->cookie_ jar( $cookie_jar );最后调用UserAgent的POST方法提交用户名和密码:my $url = URI->new('http://202.120.126.80/sbc/passport/login. shtml');my $response = $ua->post($url,['username' => 'user1','password' => '123456']);

使用Perl解析网页中的数据并存入Excel文档(见图1)。

Perl利用强大的正则表达式和复杂的模式匹配技巧来快速处理大量文本,因此非常适合网页解析。首先使用Get方法获取图1网页中的内容:

my $res =$ua->get("http://202.120.126.80/device_info_list.shtml?page=1");

my $content = $res->as_string;

Encode::_utf8_on($content);#将网页内容编码格式转为utf8

$content=~ s/ //g;#删除回车等不可见字符

my @equip_list=$content=~ /<td>(d+w*d+)</td>/gsm; #捕获网页中的设备编号

#将编号依次填写在Excel中

foreach(@equip_list){

$destin_sheet->Cells($row_num,1)->{Value}=$_;

$row_num++;

#以上程序只解析了一个网页,如果表格在多个页面中,可以用for语句将上述代码循环执行。

图1 网页中待提取的数据列表(截图)

Perl语言融合了许多其他语言的特性,再加上对正则表达式的支持,使得其有极强的文字处理能力,以及良好的跨平台移植性。此外因特网上有众多Perl模块下载,使得用户无需编写大量代码,只需了解这些模块的使用方法便可快速地实现所需要的功能。

主要参考文献

[1]王丽宏,李晓明,方滨兴. Perl语言及其应用[J].哈尔滨工业大学学报,1997(6).

[2]朱铭亮.Perl中使用Win32:OLE模块读写Excel的方法[J].三明学院学报学报,2007(2).

10.3969/j.issn.1673 - 0194.2015.20.140

TP311.52

A

1673-0194(2015)20-0180-01

2015-08-27

猜你喜欢
因特网网页文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
基于CSS的网页导航栏的设计
基于URL和网页类型的网页信息采集研究
基于RI码计算的Word复制文档鉴别
上网
网页制作在英语教学中的应用
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
我爱因特网
10个必知的网页设计术语