如何以编程方式下载网站来源?

时间:2015-10-27 14:48:38

标签: json web-scraping

我需要从此网站下载数据Feed:

http://www.oddsportal.com/soccer/argentina/copa-argentina/rosario-central-racing-club-hnmq7gEQ/

在使用开发者工具的Chrome中,我能够找到此链接

http://fb.oddsportal.com/feed/match/1-1-hnmq7gEQ-1-2-yj45f.dat

包含我需要的一切。问题是当我知道第一个时,如何以编程方式(最好是在java中)到达第二个链接。

提前感谢任何有用的帮助。

2 个答案:

答案 0 :(得分:0)

您可以在Java中使用JSoup之类的框架并抓取页面。

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();

完成后,您可以查询该页面上的链接并将其保存到数组中:

Elements links = doc.select("a[href]");

然后运行此数组并按照它们链接。

for (Element link : links) {
   Document doc = Jsoup.connect(link.attr("abs:href")).get();
}

答案 1 :(得分:0)

这与此issue非常相似。您可以使用它来获取包含所有源的String。然后,您只需搜索字符串即可找到您要查找的内容。它看起来像这样。

首先启动ChromeDriver并导航到您要废弃的页面。

WebDriver driver = new ChromeDriver();
driver.get("http://www.oddsportal.com/soccer/argentina/copa-argentina/rosario-central-racing-club-hnmq7gEQ/");

然后将源代码下载到字符串

String scriptToExecute = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;";
String netData = ((JavascriptExecutor) driver).executeScript(scriptToExecute).toString();

最后在字符串中搜索所需的链接

netData = netData.substring(netData.indexOf("fb.oddsportal"), netData.indexOf(".dat")+4);       
System.out.println(netData);