标题: [原创代码] Perl在线汇率查询.pl (美元:RMB) [打印本页]
作者: 523066680 时间: 2011-6-2 10:14 标题: Perl在线汇率查询.pl (美元:RMB)
汇率.pl
第二行的
$rcd="D:/记录/汇率记录.txt";
指定了一个用于记录汇率的文本,每次打开除了显示汇率还会往文本追加查询结果,供以后观察。
你知道,我perl很菜,为达目的,不仅生成临时文件,还用了wget。
求助啊 为什么发上来 $& 会变成 [ DISCUZ_CODE_0 ] (在code里面)
改为quote存放代码,使用IE浏览器的可以通过 CTRL+鼠标左键点击quote框框, 选中框中的代码
$html="http://www.baidu.com/s?wd=美元汇率";
$rcd="E:/R_记录/汇率记录.txt";
open WRITE,">>$rcd" or warn "$!";
system("wget -O main.txt $html 2>nul >nul");
open READ,"<main.txt" or warn "File not exists\n";
foreach (<READ>) {
if (/(1美元=.*人民币元)/) {
print "$&\n";
print WRITE "$& ";
if (/汇率数据由和讯外汇提供,更新时间:(\d+)-(\d+)-(\d+)/) {
print "$&\n\n";
print WRITE "${1}-${2}-${3}\n";
}
}
}
close WRITE;
$html="http://www.baidu.com/s?wd=汇率";
system("wget -O main.txt $html 2>nul >nul");
open READ,"<main.txt" or warn "File not exists\n";
foreach (<READ>) {
if (/(更新时间.*\d:\d+)/) {
print "$&\n";
foreach $a (0..5) {
if ($_=~s#.*?<th.*?>(.*?)</th>##i) {
$arr1[$a]=$1;
}
}
foreach $a (0..5) {
if ($_=~s#.*?<td.*?>(.*?)</td>##i) {
printf "%-10s \t\t%s\n",$arr1[$a],$1;
}
}
}
}
print "Press Enter to quit";
<STDIN>;
人性化输出- 1美元=6.4845人民币元
- 汇率数据由和讯外汇提供,更新时间:2011-06-02
-
- 更新时间:2011-6-2 10:31:17
- 币种 美元(USD)
- 交易单位 100
- 中间价 648.34
- 现汇买入价 647.04
- 现钞买入价 641.86
- 卖出价 649.64
- Press Enter to quit
复制代码
复制代码
作者: batman 时间: 2011-6-2 10:25
本帖最后由 batman 于 2011-6-2 10:27 编辑
可惜我是prel门外汉,只能纯顶一个,顺便建议exist将常用币种的汇率换算搞出来。。。
另外感觉这个正则是不是可以简化下:($_=~s#.*?<th.*?>(.*?)</th>##i)(应该是正则吧?)
作者: 523066680 时间: 2011-6-2 10:43
本帖最后由 523066680 于 2011-6-2 11:00 编辑
关键行:
<tr> <th>币种</th> <th>交易单位</th> <th>中间价</th> <th>现汇买入价</th> <th>现钞买入价</th> <th id="op_table02_zh0">卖出价</th> </tr> <tr> <td>美元(USD)</td> <td>100</td> <td>648.34</td> <td>647.04</td> <td>641.86</td> <td class="op_table02_zh">649.64</td> </tr>
输出:
币种 美元(USD)
交易单位 100
中间价 648.34
现汇买入价 647.04
现钞买入价 641.86
卖出价 649.64
那个匹配应该是为了求稳当吧
s///带有替换作用,前面 的.*?是用来删除前面字符串的
作者: batman 时间: 2011-6-2 11:18
说了prel我不懂,感觉标签间的数据可以一次取出,用sed就是:- sed "s/[^>]*>\([^<>]*\)<*/\1/g"
复制代码
作者: --Perl 时间: 2014-10-13 17:31
- $html="http://www.baidu.com/s?wd=美元汇率";
- $rcd="E:/R_记录/汇率记录.txt";
- open WRITE,">>$rcd" or warn "$!";
-
- system("wget -O main.txt $html 2>nul >nul");
- open READ,"<main.txt" or warn "File not exists\n";
- foreach (<READ>) {
- if (/(1美元=.*人民币元)/) {
- print "$&\n";
- print WRITE "$& ";
- if (/汇率数据由和讯外汇提供,更新时间:(\d+)-(\d+)-(\d+)/) {
- print "$&\n\n";
- print WRITE "${1}-${2}-${3}\n";
- }
- }
- }
- close WRITE;
-
- $html="http://www.baidu.com/s?wd=汇率";
- system("wget -O main.txt $html 2>nul >nul");
- open READ,"<main.txt" or warn "File not exists\n";
- foreach (<READ>) {
- if (/(更新时间.*\d:\d+)/) {
- print "$&\n";
- foreach $a (0..5) {
- if ($_=~s#.*?<th.*?>(.*?)</th>##i) {
- $arr1[$a]=$1;
- }
- }
- foreach $a (0..5) {
- if ($_=~s#.*?<td.*?>(.*?)</td>##i) {
- printf "%-10s \t\t%s\n",$arr1[$a],$1;
- }
- }
- }
- }
-
- print "Press Enter to quit";
- <STDIN>;
复制代码
作者: --Perl 时间: 2014-10-13 17:33
本帖最后由 --Perl 于 2014-10-13 17:35 编辑
回复 1# 523066680 复制代码
复制代码
:smile:
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |