网页视频抓取脚本(使用perl实现网页抓取,对网络蜘蛛的初步尝试。 )

优采云 发布时间: 2021-10-09 03:32

  网页视频抓取脚本(使用perl实现网页抓取,对网络蜘蛛的初步尝试。

)

  使用perl实现网络爬虫,初步尝试网络蜘蛛。

  环境

  windows xp、IIS、perl 5.88、CMD

  使用的模块

  使用 LWP::Simple;获取网页

  使用 HTML::HeadParser;解析部分以获取标题、代码、关键词

  使用 HTML::FormatText::WithLinks;将html变成文本可读的样式

  使用编码qw/编码解码/;解决不同网页的编码问题

  要求

  在CMD中调试,最后在IIS中调用。分析结果必须保存在数据库中。数据库使用utf8编码,解析出来的网页是gb2312编码,所以明确编码尤为重要。

  首先要明确编码的概念

  垃圾问题

  脚本使用ANSI编码,但数据库内容使用解码。结果内容出现了一些乱码,就是HTML::FormatText::WithLinks;将 html 转换为文本可读样式时出现问题。可以算是一个bug

  解决方案

  脚本使用 utf8 编码。首先对获取的网页进行解码,然后进行其他处理。问题解决了,但是在cmd下调试的时候,会出现“Wide character in print”的警告信息,因为环境是gbk,输出urt8编码会报警。使用encode("euc-cn", $value)对输出进行转义可以解决这个问题,但是网上说添加使用编码"utf-8";无法解决这个问题。

  其他需要注意的问题

  遗留问题:IIS支持perl,配置没问题,增加了.pl和.cgi的定义。测试中发现在IE下正常,firefox下弹出保存文件的对话框,但之前的.pl正常。估计跟haed的输出有关,需要进一步测试。

  编码和解码功能说明

  encode 函数用于对 Perl 字符串进行编码。它将Perl字符串中的字符按照指定的编码格式进行编码,最后转换成字节流的形式,所以在处理Perl处理环境之外的事情时经常需要用到它。

  格式很简单:

  $octets = encode(ENCODING, $string [, CHECK])

  $string:Perl 字符串

  encoding:是给定的编码方式

  $octets:是编码后的字节流

  check:指示如何处理转换过程中扭曲的字符(即 Perl 无法识别的字符)。一般不需要

  decode 函数用于对字节流进行解码。它根据您提供的编码格式来解释给定的字节流,并使用 utf8 编码将其转换为 Perl 字符串。一般来说,从终端或文件中获取的文本数据应该使用 decode 转换为 Perl 字符串形式。其格式为:

  $string = decode(ENCODING, $octets [, CHECK])

  $string、ENCODING、$octets 和 CHECK 含义同上。

  如何使用此功能的示例:

  use Encode;

$dat="测试文本";

$str=decode("gb2312",$dat);

@chars=split //,$str;

foreach $char (@chars) {

print encode("gb2312",$char),"/n";

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线