我用Perl编写的脚本检索公司文件,如8-K和10-K报表的“完整的提交文本文件”。脚本下载意外
即使这些文件是.txt文件,它们实际上是HTML文件。下面是这些特定的文件之一的首部的一个例子:
<SEC-DOCUMENT>0001104659-12-008133.txt : 20120209
<SEC-HEADER>0001104659-12-008133.hdr.sgml : 20120209
<ACCEPTANCE-DATETIME>20120209153739
这个特定的文件位置为:https://www.sec.gov/Archives/edgar/data/1001838/000110465912008133/0001104659-12-008133.txt
正如你所看到的,当你点击该文件,你可以阅读的内容。然而,下载该文件的Perl脚本生成一个文件与看起来像这样的内容:
±šÜÏ|¨^Ÿ¨T¡š¯À½ä¾<™R¶| [T)S,” àë§-F +™•μ~¨ÀáÊ'jv-IE·T¡Š¥E-“RZujKk)š|4¨”Þªkä<·nðü³²¥XjSmYÎõ™?÷UF™S [Ù} HV¢LšDÆ.zjyßýμ“Èo¿øÒ¾²>šoOª+ &ò'äòDì?Sÿyúà¹ÛùDŽ\üŸr¡ZÙÉ”òðU†+“Š+ä ÂRbZýÎS{™òc'ü”ð<2 @ ~N“Òä'Õr¥”..._§ ö€ÁV6Õín.SOsÙ!|6¿MÁμì\™ - •ŸqýÏ EEA¢上证所/>' - )”zãöŸt¾ÞÊ-SPA“L¢Deòiò9ÇtúNžq~دfÊ1òSèg- 6àÞ™•Hü¹¨[R‰šÕýŒÛSƒ钕欧盟〜U〜î¹¥/EäH~...§%«ALJ%ÒéüμÆ ‘©PU)A8tÚ¡去•U&L·ÿ†‡ß’«@ S-X-w¶bpq§Ég{#A >JœÂÓl'¼ŽH,OÆþéùðû<!1 *†$¾Ÿú.'ÿÿ™¶MÙoÉ|œýô§^²{¼| | D ?}“;Êl~-¿þ~š &Uødz$`¬<μÒÒæ|Öž$äÔ¡×:!ƒj$Ú:7μFèDî'®€è¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ -k7zý'j(»OL &ª-g೺ö> 2C†Ÿ¹Õ[VèVijÇXEkª&•W¨'ÞTZ«¯〜Z£¥uÕÝè-7c|ÞÐêÔƒÖªë- rcضμÚýQC½μb-½¥ö> 0'»U- ŸXzûï>öMÚJ½®μîbö-)VkQO¯ìFμ_6ɹmS1î'VŒüšüŸ!Â|ï¢Îμk¤¿“©ý\ÌÍP·J ^¼êÌ<±!¿u- /'nÌöêÚùf} m¥ mY²>¤4'»V |?|Y5žîñN«HgCö1ç,WmãÑ6öýÆ¢U7/&}¢一个»aöªÿÞ¨Ã=«ý°æ1P^»1O)〜ÕR¶”
我!想知道这是否是由于加密发生在他们的最终。从浏览他们的网站来看,他们似乎并不承认要加密通过网络传输的文件。我个人不认为这是事实,因为我可以在我的浏览器中手动下载文件。
这里是Perl代码,负责下载文件并将其保存到硬盘驱动器的segmenet:
@arraydata = split(/\,/, $datagn[$j]);
if($arraydata[2] =~ m/8K/ || $arraydata[2] =~ /8\-K/){
# Starts crawler, not checking for errors
my $mech = WWW::Mechanize->new(autocheck => 0);
# Grabs address
@arraydatad = split(/\//, $arraydata[4]);
# Formats output file name
$filenamea = "Reports\\" . $dirname . "\\" . $cik . "\\" . $arraydatad[3];
chomp($filenamea);
# This is the file from the EDGAR archives
$filecrawl = "https://www.sec.gov/Archives/" . $arraydata[4];
# This crawls the file and saves it to the hard drive
$mech->get($filecrawl, ':content_file' => $filenamea);
完整的代码是在这里:http://pastebin.com/QXb1zcdv
没有任何人有一个想法为什么我在使用SEC.gov的Perl脚本进行下载时,会收到一个废话的文件?
可能只是压缩。尝试删除':content_file'并使用'$ response-> decoded_content(charset =>'none')'来获取文件。可能是更好的方法。 – ikegami
你有没有*尝试调试?看着神秘数据的十六进制转储(比可打印视图更有用)?用Wireshark检查客户端和服务器之间交换的头文件? –