- 论坛徽章:
- 0
|
本帖最后由 yhyhh 于 2011-07-26 12:22 编辑
小女子编写了一段perl脚本,来调用 "http://www.ip138.com:8080/search.asp" 进行 手机号码归属地查询。包含查询结果的网页内容被存入一个字符串中,本人期望只提取手机号码归属地这一项字串,不知道如何实现关于这段字符串的模式匹配。忘高手指教!多谢多谢!
1. 程序源文件
************************************************************
test_ipcheck_v3.pl
************************************************************
#!/usr/bin/perl -w
use warnings;
use URI;
use LWP;
use Encode;
#用法 ip138search.pl iplist.txt
#以iplist.txt为参数,传入给变量$filename
my $filename=$ARGV[0];
open(FILE,$filename) || die "faile";
my $line = '0';
while($line=<FILE>){
chomp($line);
my $url=URI->new('http://www.ip138.com:8080/search.asp');
$url->query_form('mobile' => $line);
my $browser = LWP::UserAgent->new;
my $response = $browser->get($url);
if($response -> is_success) {
$value = $response -> decoded_content;
#中文解码
$out = encode("gb2312",$value);
}
else {
die $response -> status_line;
}
#M模式匹配
$str = $out;
$str =~ m/您查询的手机号码段:\s*/;
print "$line \n";
#print "$str";
}
close(FILE);
************************************************************
2. 当前程序运行情况:
************************************************************
C:\MyPractice\Perl>Test_ipcheck_v3.pl mobilelist_v1.txt
1340001
************************************************************
3. 期望程序运行情况:
************************************************************
C:\MyPractice\Perl>Test_ipcheck_v3.pl mobilelist_v1.txt
1340001 江苏 无锡
************************************************************
4. 个人理解的备注:
************************************************************
a. 这段代码的问题出在模式配置,不知道如何修改才好。求高手赐教!不甚感激!
b. 程序中变量out为包含查询结果的网页内容的xml格式信息,而本人希望提取的是下面table中号码归属地的相关信息,希望能够与这一段信息进行模式匹配,然后作为运行结果输出
<TABLE width=349 border="1" align="center" cellpadding="4" bordercolor=#3366cc style="border-collapse: collapse">
<TR>
<TD colspan=2 class=tdc1 align=center height=24 bgcolor=#6699cc>++ ip138.com查询结果 ++</TD>
</TR>
<TR class=tdc bgcolor=#EFF1F3>
<TD width="130" align="center" noswap>您查询的手机号码段</TD>
<TD width=* align="center" class=tdc2>1340001</TD>
</TR>
<TR class=tdc bgcolor=#EFF1F3>
<TD align="center">卡号归属地</td><!-- <td width="130" align="center">卡号归属地</TD> -->
<TD class="tdc2" align="center">江苏 无锡</TD>
</TR>
<TR class=tdc bgcolor=#EFF1F3>
<!-- <td width="130" align="center" noswap></td> --><TD width="130" align="center" noswap>卡 类 型</td><td align="center" class='tdc2'>移动全球通卡</TD>
</TR>
<TR class=tdc bgcolor=#EFF1F3>
<TD align="center">区 号</TD>
<!-- <td></td> --><TD align="center" class=tdc2>0510</TD>
</TR>
<TR class=tdc bgcolor=#EFF1F3>
<TD align="center">邮 编</TD>
<TD align="center" class=tdc2>214000 <a href="http://alexa.ip138.com/post/" target="_blank">更详细的..</a></TD></TR>
</TABLE> |
|