使用java / htmlunit我想数据挖掘(web scrape)一堆对冲基金SEC 13F文件。我不知道如何对SEC的.txt文件进行数据处理,例如This Table。
表格布局看起来干净整洁,但如何使用相应的< Table >
和< S >
抓取< C >
?此外,我如何只获取公司名称和< C >
值(第3列)和< C >
Shares Amt(第4列)。
我不确定自己是否走在正确的轨道上,但是我使用了Bufferedreader,不知道接下来要做什么来抓取< Table >
中的数据...这就是我到目前为止所拥有的:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class BufferedReaderExample {
public static void main(String[] args) {
try {
// Create a URL for the desired page
URL url = new URL("http://www.sec.gov/Archives/edgar/data/1047644/000104746912006072/a2209520z13f-hr.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
}
}
答案 0 :(得分:0)
我不知道这个文档有什么样的格式,但HTMLUnit最多允许你从网上下载它。你必须自己进行解析。
现在,格式似乎不是XML,HTML或任何标准格式(至少从我知道的少量)...所以,我首先考虑正则表达式,但经过一秒钟的思考我意识到你已经得到了由短划线(-)
表示的列的长度。
您可以使用正则表达式来获取<table>
标记之间的所有内容,然后使用任何编程语言将虚线分割为字符串数组,然后将每行的文本剪切为字符数量。每个字符串。
那就是它:)