`
deepfuture
  • 浏览: 4398224 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80056
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70002
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103304
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285643
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67508
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32103
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45965
社区版块
存档分类
最新评论

神奇的perl-第六个任务(8)

阅读更多

本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载

 

4.获取网页

如何取得ip来源地区?不用重新发明轮子,我们使用外部工具。

在GOOGLE搜索“ip查询”,可搜索到很多提供此项服务的网站,选择http://www.ip138.com/进行ip查询,在IP地址或者域名栏内输入221.226.19.186。IP地址做为参数通过get模式传入http://www.ip138.com/ips.asp。

通过http://www.ip138.com/ips.asp?ip= 117.32.251.242&action=2&action=2,获得对应地区。

下面, 我们试着编写Perl程序来自动完成查询IP的功能,首先要解决的问题是如何获取网页。有了LWP::Simple模块的支持,我们不用直接解析HTML协议,完成 这项工作变得十分简单。

 

我们使用get子程序来获取网页,该子程序会将获取的网页做为一个标量返回,我们能轻易发现,地区字符串“陕西省西安市”这个字符串位于“本站主数据:”之后,空格之前,对于某些IP地址,无法查询接入提供商,因此地区字符串也可能位于“</li>”之前。

为保证多平台字符编码兼容性,将“本站主数据:”做为变量在正则表达式中使用,程序以UTF8编码保存,使用decode('utf8',"本站主数据:")以UTF8解码。

先定义解码后的标量:

$sjts =decode('utf8',"本站主数据:");

然后再通过正则模式串/$sjts(\S+?)(<\/li>|\s)/)进行匹配。


#perl4-12.pl

use strict;   

use warnings;   

use LWP::Simple; 

use Encode;

use Utf2Gbk;

 

.............

...........

$url='http://www.ip138.com/ips.asp?ip='.$ip.'&action=2&action=2';  

$sjts=decode('utf8',"本站主数据:");

$page=get($url);#获取网页

if (sysisutf8()){#判断当前系统用的编码,sysisutf8是Utf2Gbk模块的导出子程序

  binmode(STDOUT, ':encoding(utf8)'); 

}

else{

  binmode(STDOUT, ':encoding(gbk)'); 

}

print $1 if $page=~m/$sjts(.+?)(<\/li>|\s)/;


 

分享到:
评论

相关推荐

    神奇的perl-最佳Perl入门

    #### 第一个Perl任务 - 通过读取文件、处理数据并输出结果来完成第一个任务。 #### 文件处理原则 - 使用文件句柄(如`$fh`)打开文件,使用`open`函数。 - 读取文件通常使用`&lt;&gt;`操作符或`readline`函数。 - 关闭...

    ActivePerl-5.8.6.811-MSWin32-x86-122208.msi.7z

    标题中的"ActivePerl-5.8.6.811-MSWin32-x86-122208.msi.7z"表明这是一个针对Windows 32位系统的ActivePerl版本5.8.6.811的安装程序,它已经被压缩成7z格式的文件。ActivePerl是Perl编程语言的一个流行的实现,特别...

    strawberry-perl-5.10.1.5.zip

    Perl的版本号通常由主版本号、次版本号和修正版本号组成,这里的5.10.1表示这是Perl 5系列中的一个稳定版本,而.5可能是该版本的第五次更新。 描述中提到,"strawberry-perl-5.10.1.5"适合那些在Windows上进行Perl ...

    perl-centos6.rar

    在CentOS 6操作系统中,Perl被广泛用于系统管理、文本处理、网络编程、Web开发等多种任务。本资源包"perl-centos6.rar"提供了Perl在CentOS 6上的离线安装包,包括了perl-5.10.1-127.el6.x86_64.rpm等组件,这些组件...

    mastering-perl-scripts.zip

    4. **模块和CPAN**:CPAN(Comprehensive Perl Archive Network)是Perl模块的宝库,包含了数万个第三方模块,可以帮助扩展Perl的功能。学习如何使用CPAN和导入模块可以极大地提升开发效率。 5. **正则表达式**:...

    perl-5.16.3.tar.gz

    `perl-5.16.3.tar.gz`是一个包含Perl 5.16.3源代码的压缩包文件,该版本发布于2013年,它是Perl发展历史中的一个重要里程碑。 Perl 5.16.3是Perl 5系列的一个稳定版本,提供了许多改进和新特性。在这个版本中,...

    Perl-5.8.6.811-MSWin32-x86

    总之,Perl 5.8.6.811 for MSWin32-x86是一个功能强大、灵活的编程工具,尤其适合在Windows环境中进行文本处理、系统管理和自动化任务。通过熟练掌握Perl,开发者可以极大地提高工作效率,处理复杂的问题。

    perl-5.34.0.tar.gz

    6. **Configure**:这是一个脚本,用于配置Perl的构建过程,允许用户根据目标系统的特性定制Perl的编译选项。 7. **makemaker**:Perl的Module::Build或ExtUtils::MakeMaker工具,用于帮助创建和构建Perl模块。 ...

    perl-24学时搞定

    6. **第6学时:模式匹配** - 正则表达式(regex)基础,包括字符类、量词、分组等。 - 使用`m//`、`s///`和`=~`操作符进行模式匹配和替换。 - `grep`和`map`函数在处理列表中的模式匹配应用。 7. **第7学时:...

    PERL-FLEX.rar_flex_软件编译工具

    它作为一个编译器工具,主要任务是帮助开发者创建词法分析器,这是编译器或解释器的第一步,用于识别源代码中的基本元素,如标识符、关键字、运算符等。这里提到的PERL正则表达式转换,指的是flex能够理解并处理PERL...

    perl-net-etcd:Net :: Etcd etcd v3 gRPC网关Perl客户端

    5. **Perl5**:Perl5是Perl语言的当前稳定版本,它包含了丰富的标准库和第三方模块,如Perl-net-etcd,这些模块扩展了Perl的功能,使其能处理特定的任务。 6. **etcd客户端**:Perl-net-etcd是一个Perl版本的etcd...

    Shell-Perl-Python脚本入门教程PDF

    8. **第三方库**:如NumPy和Pandas用于科学计算,Matplotlib和Seaborn用于数据可视化,Django和Flask用于Web开发。 通过学习这三个脚本语言,你可以根据任务需求选择最合适的工具,无论是简单的系统管理任务,还是...

    perl-live:perl实时编码

    - Perl5 是Perl语言的第五个主要版本,引入了许多新特性和改进,至今仍是最广泛使用的Perl版本。 2. **Emacs编辑器** - Emacs 是一个高度可定制的、全功能的文本编辑器,支持多种编程语言,并且具有内置的shell、...

    perl常见编程100个实例

    Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务方面表现突出。"perl常见编程100个实例"提供了丰富的示例,帮助初学者和有经验的开发者更好地理解和运用Perl语言。这些实例覆盖了Perl编程的多个关键...

    perl-tools:各种perl工具

    Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务方面表现卓越。"perl-tools"是一组专门针对Perl语言的实用工具,旨在提高Perl程序员的效率和代码质量。这个压缩包"perl-tools-master"很可能包含了多种...

    perl-stormpath:网络服务

    8. **异步操作**:对于可能需要时间完成的 API 调用,如发送验证邮件,Perl-stormpath 可能会提供异步方法,允许开发者在后台处理这些任务,而不会阻塞应用程序的其他部分。 在使用 `perl-stormpath-master` 压缩包...

    Perl语言入门(第六版)

    此次第六版涵盖了最新的Perl 5.14版本的变化。 Perl能在绝大多数平台上完成几乎所有任务,不管是简单的修修补补,还是大型完备的网络应用。《Perl语言入门》从最基础的开始教起,然后逐渐深入,让你慢慢能够自行编写...

    《Perl语言入门_第6版》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于Perl编程语言的入门书籍——《Perl语言入门_第6版》的下载链接。以下是对该书可能包含的一些重要知识点的概述: ### Perl语言简介 Perl是一种高级、通用且解释型的...

    perl第五版课后习题代码

    根据给定文件中的内容,我们可以总结出Perl编程语言中几个重要的知识点和实例: ### 1. 计算圆的周长 #### 练习2.12 **目标**: 编写一个Perl程序来计算半径为特定值的圆的周长,并允许用户输入半径值。 **代码...

    perl-Net-Kafka:Net :: Kafka-Apache Kafka的高性能Perl客户端

    - **perl5**:Perl的第五个主要版本,目前广泛使用的版本,区别于早期的Perl 4。 - **apache-kafka**:Apache Kafka的标识,表明这个项目是Apache软件基金会的一部分。 - **librdkafka**:这是一个C语言实现的Kafka...

Global site tag (gtag.js) - Google Analytics