- 论坛徽章:
- 0
|
大家,麻烦帮我看个程序,是从股票网站上扒数的东西。一共有298个股票,每个股票又一个贴吧,贴吧的页数用$page_num获取。之后输出成txt,用股票代码命名。
程序可以运行,没有问题。但是很多股票有1000页,运行到200页perl就停止工作了(而且是j<1即仅跑一只股票的时候)><。。。。
就是这个停止工作是为嘛哩,是不是内存不够什么的?有没有什么改进办法呀。我有几百只股票要处理呢,很想一次跑多个股票呀。。。。
求教~~
#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
use utf8;
my ($dianji,$huifu,$biaoti,$zuozhe,$zuihougengxin,$fabiaoriqi);
my @content;
my $j=0;
my $stkcd=123456;
open (MYFILE, "code.txt" || die "打开code.txt失败!";
@content=<MYFILE>;
close (MYFILE);
for (;$j<298;++$j)
{
print $content[$j]."\n";
$stkcd=int($content[$j]);
open (TEXT,">".$stkcd.".txt" or die "创建结果文件失败!";
binmode(TEXT, ':encoding(utf');
print TEXT "代码\t\t点击\t\t回复\t\t标题\t\t作者\t\t最后更新\t\t发表日期\n";
my $geturl=get("http://guba.eastmoney.com/topic,".$stkcd."_1.html"
my $page_num=$1 if($geturl =~ /page_num=(\d+);/ig);
for (my $i=1;$i<=$page_num;++$i)
{
my $url="http://guba.eastmoney.com/topic,".$stkcd."_".$i.".html";
$geturl=get($url);
while($geturl =~ /<ul><li\ class=l1>(\d+?)<\/li><li\ class=l2>(\d+?)<\/li><li\ class=l3><.*?\ >(.*?)<\/a><\/li><li\ class=l4>(.*?)<\/li><li\ class=l5>(.*?)<\/li><li\ class=l6>(.*?)<\/li><\/ul><\/div>/g)
{
$dianji=$1;
$huifu=$2;
$biaoti=$3;
$zuozhe=$4;
$zuihougengxin=$5;
$fabiaoriqi=$6;
binmode(TEXT, ':encoding(utf');
print TEXT $stkcd."\t\t".$dianji."\t\t".$huifu."\t\t".$biaoti."\t\t".$zuozhe."\t\t".$zuihougengxin."\t\t".$fabiaoriqi."\n";
}
}
close TEXT;
} |
|