免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yhyhh
打印 上一主题 下一主题

奔溃中,请教一个关于perl脚本模式匹配的问题 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2011-08-02 20:27 |只看该作者
回复 60# txh_zyy


    是的,呵呵,八过让人困扰的是大伙儿乐得灌水,问题还在,5555555。

论坛徽章:
0
62 [报告]
发表于 2011-08-02 20:29 |只看该作者
小女子现在是在线看“扶凯”TX 发的精华帖子,自学perl了,喏,下面这篇好文。。。

[保留] 【汇总】Perl 教学视频-探索Perl的世界-Superor作品(更新到第十七章56集)

论坛徽章:
0
63 [报告]
发表于 2011-08-02 20:36 |只看该作者
帖子就那么水了,哈哈
txh_zyy 发表于 2011-08-02 20:25



   在线讨论,交流 & 寻求答案了,呵呵~~

论坛徽章:
0
64 [报告]
发表于 2011-08-02 22:09 |只看该作者
本帖最后由 yhyhh 于 2011-08-02 22:46 编辑


路漫漫其修远兮,吾将上下而求索~

论坛徽章:
0
65 [报告]
发表于 2011-08-02 22:44 |只看该作者
回复 56# iakuf

    小女子要竭尽所能把楼掰回来了,实在歪的太厉害了~~

扶凯TX 给的源文件,关于下面这句去掉不行的,唯一要改动的是把utf-8 改成GB2312,即可正常运行,得到结果。********************************************************
我的意思是去掉这行
my $out = encode("utf-8",$value);
*********************************************************

   目前的问题还是2个,一是特殊字符不能正常显示,二是若是输入文件中填写多个查询号码(>21个),那执行该perl脚本,会出错。错误提示如下:

         为什么会出现变量未初始化的情况呢?

         经再三思忖,作此决定,若是两个问题得以顺利解决,小女子定当自曝以谢众人。


*********************************************************
程序运行结果如下:
*********************************************************
C:\MyPractice\Perl>Test_ipcheck_v6.pl mobilelist_v1.txt
您查询的手机号码段      1340001 卡号归属地      '江苏犖尬?
您查询的手机号码段      1340002 卡号归属地      '江苏犖尬?
您查询的手机号码段      1340003 卡号归属地      '江苏犖尬?
您查询的手机号码段      1340004 卡号归属地      '江苏犖尬?
您查询的手机号码段      1340005 卡号归属地      '江苏犇暇?
您查询的手机号码段      1340006 卡号归属地      '江苏犇暇?
您查询的手机号码段      1340007 卡号归属地      '江苏犇暇?
您查询的手机号码段      1340008 卡号归属地      '江苏犝蚪?
您查询的手机号码段      1340009 卡号归属地      '江苏犝蚪?
您查询的手机号码段      1340010 卡号归属地      '河北牶??
您查询的手机号码段      1340011 卡号归属地      '河北犑?易?
您查询的手机号码段      1340012 卡号归属地      '河北牨6?
您查询的手机号码段      1340013 卡号归属地      '河北犝偶铱?
您查询的手机号码段      1340014 卡号归属地      '河北犘咸?
您查询的手机号码段      1340015 卡号归属地      '河北犘咸?
您查询的手机号码段      1340016 卡号归属地      '河北牨6?
您查询的手机号码段      1340017 卡号归属地      '河北牪字?
您查询的手机号码段      1340018 卡号归属地      '河北犘咸?
您查询的手机号码段      1340019 卡号归属地      '河北犘咸?
您查询的手机号码段      1340020 卡号归属地      '河北牶??
您查询的手机号码段      1340021 卡号归属地      '河北犑?易?
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
22.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
22.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
22.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
22.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
23.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
23.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
23.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
23.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
24.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
24.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
24.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
24.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
25.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
25.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
25.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
25.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
26.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
26.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
26.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
26.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
27.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
27.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
27.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
27.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
28.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
28.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
28.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
28.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
29.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
29.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
29.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
29.
                        ''
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
30.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 41, <FILE> line
30.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
30.
Use of uninitialized value in concatenation (.) or string at C:\MyPractice\Perl\Test_ipcheck_v6.pl line 42, <FILE> line
30.

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
66 [报告]
发表于 2011-08-02 23:11 |只看该作者
有自曝啊,大家热情点 {:3_189:}

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
67 [报告]
发表于 2011-08-02 23:27 |只看该作者
我想是因为 IP138 的防刷机制。

论坛徽章:
0
68 [报告]
发表于 2011-08-02 23:35 |只看该作者
本帖最后由 yhyhh 于 2011-08-02 23:36 编辑

回复 66# zhlong8


    那木就给力一点解决问题吧,哈哈~~~
           No pain, no gain.

论坛徽章:
0
69 [报告]
发表于 2011-08-02 23:36 |只看该作者
本帖最后由 yhyhh 于 2011-08-02 23:38 编辑

回复 67# iakuf

    起初猜测也是这样子,因为出现变量未初始化的错误是随机性的,而隔一段时间之后运行同样的脚本,就能取回结果,这样子分析来看,若在程序内部加一个sleep函数可以解决这个问题吗?

论坛徽章:
0
70 [报告]
发表于 2011-08-03 10:52 |只看该作者
本帖最后由 x9x9 于 2011-08-03 11:09 编辑

回复 69# yhyhh


    sleep会不会解决防刷没试,但稍稍sleep一下也是对人家server的尊重~
  1. use strict;
  2. use warnings;
  3. use LWP::UserAgent;
  4. use HTML::TreeBuilder;

  5. my $ip_url='http://www.ip138.com:8080/search.asp?action=mobile&mobile=';

  6. while (<DATA>) {
  7. chomp;
  8. print "$_\t";
  9. my $link=$ip_url.$_;
  10. my $cont=get_html("$link", "Accept-language" => "zh-cn", 'Accept-Charset' => 'gb2312', );
  11. my $table=$1 if $cont=~m{<TABLE width=349 border="1" align="center" cellpadding="4" bordercolor=#3366cc style="border-collapse: collapse">(.*?)</TABLE>}s;
  12. $table=~s/&nbsp\;/ /g;
  13. my $root=HTML::TreeBuilder->new();
  14. $root->strict_comment(1);
  15. $root->parse($table);
  16. $root->eof();

  17. my $tr =($root->find_by_tag_name('tr'))[2];
  18. my @kids = $tr->content_list(  );
  19. if (@kids and ref $kids[1] and $kids[1]->tag() eq 'td') {
  20. print $kids[1]->as_text(  ), "\n";
  21. }

  22. $root->delete;
  23. sleep(2);
  24. }

  25. sub get_html {
  26.   my $browser = LWP::UserAgent->new(  );
  27.   $browser->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
  28.   my $resp = $browser->get(@_);
  29.   return ($resp->content, $resp->status_line, $resp->is_success,$resp) if wantarray;
  30.   return unless $resp->is_success;
  31.   return $resp->content;
  32. }

  33. __DATA__
  34. 18810340688
  35. 18810040188
  36. 15932344334
  37. 18703883394
  38. 15901055555
  39. 13245875555
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP