2013-09-04 1 views
0

Ce serait génial si quelqu'un peut vous aider. Je suis vraiment coincé.script perl pour accéder aux fichiers maîtres sec edgar retourne le fichier non trouvé quand le fichier existe sur le serveur ftp

Je télécharge les fichiers maîtres de EDGAR de la SEC et je suis le script FROM- http://brage.bibsys.no/bi/bitstream/URN:NBN:no-bibsys_brage_38213/1/Norli_SRFE_2012.pdf (page 14..published maintenant)

Je reçois l'erreur 404 master.gz introuvable Lors du débogage je l'ai fait coller l'URL et quand j'utilise la même chose dans le navigateur, je peux télécharger le fichier. Il analyse correctement l'URL jusqu'à QTR1, mais après cela, il n'est pas en mesure de trouver le fichier quand il existe réellement ..please help.

1) pour des raisons de débogage maintenant je changé le code à 1995 (mais le plan plus tard pour ajouter des années 1995 à 2012)

2) Il ne fonctionne pas pour tout fichier. Quand j'ai dit QTR1 abovr - je voulais dire que le même code sans le nom de fichier (juste pour tester) - .... full-index/1995/QTR1/(sans le nom du fichier) renvoie un code d'état OK mais ... ftp.sec.gov/edgar/full-index/1995/QTR1/master.gz renvoie l'erreur 404 fichier introuvable. Cela ne fonctionne pas pour n'importe quel trimestre.

J'ai perdu tellement de temps sur cette chose apparemment simple qui est supposée fonctionner mais ça ne marche pas ... pourriez-vous copier cela et courir ... est-ce que ça marche pour vous?

Le code ci-dessous récupère les fichiers maîtres des dossiers QTR. Mon code :: coller

------

use LWP::UserAgent; 
my $ua = LWP::UserAgent->new; 
$ua->timeout(250); 
$ua->env_proxy; 

for($year=1995; $year<1996; $year=$year+1){ 
for($i=1; $i<5; $i=$i+1){ 
$quarter = “QTR” . $i; 
$filegrag = “ftp://ftp.sec.gov/edgar/full-index/” . $year . “/” . $quarter .  “/master.gz”; 
print $filegrag; 

# This command gets the file from EDGAR 
my $response = $ua->get($filegrag); 
print $response; 
    print $response->status_line; 

# Now just pipe the output to a file named appropriately 
$filename = $year . $quarter . “master”; 
open(MYOUTFILE, “>” . $filename); 
if ($response->is_success) { 
print MYOUTFILE $response->decoded_content; 
} 
else { 
die $response->status_line; 
} 
close(MYOUTFILE); 
} 
} 
+0

Afficher la sortie de l'exécution du script –

+0

Fonctionne pour moi. Le serveur FTP est parfois surchargé et prend beaucoup de temps pour répondre. – daxim

+0

Merci beaucoup. J'ai réalisé qu'il y avait des problèmes de pare-feu qui causaient le problème que j'avais. Maintenant, les choses vont bien – uma

Répondre

0

je me suis aperçu qu'il y avait des problèmes de pare-feu qui ont été la cause du problème que j'avais. Maintenant, les choses vont bien.

Questions connexes