由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 找不到合适的版面问perl的问题,在这试试,包子酬谢
相关主题
二叉树按层次打印有没有办法换行显示?怎么读一个超大文件的最后n行?
问一道题EDA公司招聘(simulator方向)
请高手帮助几道 perl 编程题请教一道题
PERL LWP 中有和 wget --no_check_certificate 对应的函数吗?30+的菜鸟求建议
说说我的面试经验(1)H1B拿到后,如果被公司layoff后可以到其它公司工作么
Unix/Linux下的C++ coding 跟Windows下到底有多大不同?大公司的policy
很多公司把似乎不接受pdf格式的简历面试问题请教
ebay skype interview面经(4轮)Facebook第一面经,通话质量差
相关话题的讨论汇总
话题: print话题: url话题: perl话题: use话题: page
进入JobHunting版参与讨论
1 (共1页)
d*****g
发帖数: 978
1
一个perl的很简单的问题,就是从msn网页中提取信息, 我从其他网站比如yahoo都没
有问题,试过很多次了, 但msn网站的信息就无法读取, 是不是他们的换行键和普通
的不一样?
以下是我的代码
#!/usr/bin/perl
#use strict;
use warnings;
use LWP::Simple;
my $url="http://investing.money.msn.com/investments/equity-options?symbol=US:JCP&optionsdate=11/22/2014";
my $page=get($url);
$page =~ /symbol=126.2.JCP4KMC010000">s+(.*)s+/;
print "yesn";
print "option : $1n";

------------------------------------------------
读取的网址如下:
http://investing.money.msn.com/investments/equity-options?symbo
谢谢
y*****1
发帖数: 76
2
脚本是不是少了很多斜杠啊?
像是\s+或是\n这种都没有啊。
还是我理解有错误?
输出这样总感觉怪怪的,要拿到怎样的信息才对?
yes
126.2.JCP4KMC010000
d*****g
发帖数: 978
3
贴过来之后很多斜杠被吃掉了, 我没仔细观察,现在用、代表斜杠。 您做到了吗?您
的输出结果是应该对的,
怎么改的呢?谢谢
刚才实验经验成功了, 不管怎样,包子给您
#!/usr/bin/perl
#use strict;
use warnings;
use LWP::Simple;
my $url="http://investing.money.msn.com/investments/equity-options?symbol=US:JCP&optionsdate=11/22/2014";
my $page=get($url);
$page =~ /symbol=126.2.JCP4KMC010000">、s+(.*)、s+/;
print "yes、n";
print "option : $、n";


【在 y*****1 的大作中提到】
: 脚本是不是少了很多斜杠啊?
: 像是\s+或是\n这种都没有啊。
: 还是我理解有错误?
: 输出这样总感觉怪怪的,要拿到怎样的信息才对?
: yes
: 126.2.JCP4KMC010000

t****i
发帖数: 88
4
lz的code没改, 就把、还原成\
运行结果
yes
option : 126.2.JCP4KMC010000
d*****g
发帖数: 978
5
昨天一直运行不成功,不知道为什么,也给您一个包子,多谢
#!/usr/bin/perl
#use strict;
use warnings;
use LWP::Simple;
my $url="http://investing.money.msn.com/investments/institutional-ownership?symbol=JCP";
my $page=get($url);
$page =~ /Institutional Ownership (%)\s+.*\s+.*\s+.*(.*)\s+/;
print "yes\n\n";
print "Institutional Ownership (%) $1\n";

【在 t****i 的大作中提到】
: lz的code没改, 就把、还原成\
: 运行结果
: yes
: option : 126.2.JCP4KMC010000

y*****1
发帖数: 76
6
不用改,就是斜杠那个弄好后直接运行就能出结果。
d*****g
发帖数: 978
7
我现在确定msn的代码肯定有一个特殊的换行键, 换行之后还有一个tab, 因为我获取
之后在notepad和excel中显示的不同,-3.61% 之后没有换行是因为我没有截取到段尾
,理论上说\s+应该包含\n和\t了吧。 如图所示, 大牛给看看怎么回事
代码如下:
open (my $O,">c://。。。。。/out_JCP_OPTION.txt ") or die "Couldn't open: $!
";
my $ticker = "JCP";
my $url="http://investing.money.msn.com/investments/equity-options?symbol=US:$ticker&optionsdate=11/22/2014";
my $page=get($url);
$page =~ /symbol=126.2.JCP4KMC010000">\s+.*\s+.*\s+.*\s+.*\s+(.*)\s+.*\s+.*
\s+.*\s+.*\s+.*\s+.*>(.*)<.*\s+.*\s.*\s+(.*)\s+.*\s.*\s+(.*)\s+.*\s+.*\s+(.*
)\s+.*\s+.*\s+(.*)\s+.*\s+.*\s+(.*)\s+.*\s+.*\s+.*\s+.*\s+(.*)\s+/;
print "yes\n";
print "$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\n";
print $O "$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\n"

【在 y*****1 的大作中提到】
: 不用改,就是斜杠那个弄好后直接运行就能出结果。
y*****1
发帖数: 76
8
这是因为你那些有信息的数字后面的换行都只是\r。
在windows里头默认\r\n才是换行符。所以一般文本编辑器像是notepad在你这个只有\r
的情况下就看不到换行(但是wordpad可以)。
没详细看脚本,这边如果只是指标不治本的话,手动用=~s取代回来就好了。
说起来也真奇怪,\s理论上也应该能匹配\r才对,
但是刚才试了下,发现用Active Perl \s还真不匹配\r,但似乎能匹配\r\n。
所以你那个(.*)\s+的\s+匹配不了1.6\r\r\n后面那些\r\r\n,只能匹配\r\n,
所以最后$1匹配到的是1.6\r,最后留个\r下来。
d*****g
发帖数: 978
9
多谢多谢, 果然解决了我的问题, 我在您邮箱里发了另一个问题,多谢啦,有包子
1 (共1页)
进入JobHunting版参与讨论
相关主题
Facebook第一面经,通话质量差说说我的面试经验(1)
有怀孕了还在坚持找工作的妈妈么? (转载)Unix/Linux下的C++ coding 跟Windows下到底有多大不同?
非名校的CS菜鸟BOA实习的on site求助很多公司把似乎不接受pdf格式的简历
悲剧了。。h1b被拒ebay skype interview面经(4轮)
二叉树按层次打印有没有办法换行显示?怎么读一个超大文件的最后n行?
问一道题EDA公司招聘(simulator方向)
请高手帮助几道 perl 编程题请教一道题
PERL LWP 中有和 wget --no_check_certificate 对应的函数吗?30+的菜鸟求建议
相关话题的讨论汇总
话题: print话题: url话题: perl话题: use话题: page