我正在制作一个恢复彩票号码并将其显示在窗口中的应用程序。但是我不确定如何从网站上恢复数据和数字:
https://www.national-lottery.co.uk/player/p/results.ftl
你会怎么做呢?我以前做过这个,但是有一个网站返回了一个我可以使用的数据字符串。我更不确定如何做到这一点。任何建议都将不胜感激,并且该技术(如果有的话)将帮助我完成更多的项目!
我正在制作一个恢复彩票号码并将其显示在窗口中的应用程序。但是我不确定如何从网站上恢复数据和数字:
https://www.national-lottery.co.uk/player/p/results.ftl
你会怎么做呢?我以前做过这个,但是有一个网站返回了一个我可以使用的数据字符串。我更不确定如何做到这一点。任何建议都将不胜感激,并且该技术(如果有的话)将帮助我完成更多的项目!
使用Jsoup检索和解析页面:
String url = "https://www.national-lottery.co.uk/player/p/results.ftl";
Document document = Jsoup.connect(url).get();
final Elements elementsByTag = document.getElementsByTag("table");
... then work with the table or any other element
该网站提供了一个下载 CSV 版本数字的链接。只需使用它:
https://www.national-lottery.co.uk/player/lotto/results/downloadResultsCSV.ftl
看起来像:
DrawDate,第 1 球,第 2 球,第 3 球,第 4 球,第 5 球,第 6 球,红利球,球组,机器 07-Apr-2012,23,12,42,16,25,31,18,6,兰斯洛特 04-Apr-2012,44,23,9,40,33,26,31,2,梅林 31-Mar-2012,2,49,40,47,18,5,19,1,梅林 2012-03-28,16,8,39,22,3,38,26,3,梅林 24-Mar-2012,24,27,6,39,31,45,32,4,兰斯洛特 21-Mar-2012,10,14,45,25,39,21,40,1,梅林 17-Mar-2012,37,40,1,3,20,16,15,2,梅林 14-Mar-2012,15,36,26,31,14,18,48,4,梅林 10-Mar-2012,12,37,23,43,3,1,33,1,梅林 07-Mar-2012,28,44,8,35,11,2,17,3,梅林 03-Mar-2012,31,20,40,28,7,23,42,4,梅林 29-Feb-2012,41,29,46,14,49,13,43,3,兰斯洛特 25-Feb-2012,29,27,26,7,32,25,33,1,兰斯洛特 22-Feb-2012,35,12,7,49,43,15,8,4,梅林 18-Feb-2012,19,22,30,33,41,2,24,4,兰斯洛特 15-Feb-2012,30,40,28,33,9,44,16,3,梅林 11-Feb-2012,24,31,23,1,49,45,6,3,兰斯洛特 08-Feb-2012,7,13,31,44,36,16,26,8,兰斯洛特 04-Feb-2012,41,45,7,40,48,4,46,2,梅林 01-Feb-2012,7,39,38,17,22,21,3,2,兰斯洛特 28-Jan-2012,10,25,31,40,28,12,1,2,兰斯洛特 2012 年 1 月 25 日,2,30,8,26,45,39,46,1,梅林 21-Jan-2012,17,5,32,39,49,42,19,5,梅林 18-Jan-2012,22,43,34,9,31,35,20,6,梅林 14-Jan-2012,7,12,10,15,25,42,33,7,兰斯洛特 11-Jan-2012,40,33,39,9,2,27,45,6,兰斯洛特 07-Jan-2012,47,8,15,17,14,20,38,7,梅林 04-Jan-2012,42,43,30,9,28,26,2,8,梅林 31-Dec-2011,11,38,42,37,44,7,2,7,兰斯洛特 2011年12月28日,48,11,49,13,17,8,19,6,兰斯洛特 2011 年 12 月 24 日,43,32,36,15,23,1,19,7,兰斯洛特 2011年12月21日,30,7,28,34,38,45,6,5,梅林 17-Dec-2011,42,1,35,48,39,22,12,5,梅林 14-Dec-2011,3,43,30,28,10,25,31,8,梅林 10-Dec-2011,30,21,29,39,24,16,20,6,兰斯洛特 07-Dec-2011,10,31,27,47,32,14,41,5,梅林 03-Dec-2011,49,1,35,48,47,30,8,8,梅林 30-Nov-2011,30,26,25,24,23,13,4,7,梅林 2011年11月26日,13,36,26,16,25,46,15,6,梅林 2011年11月23日,19,31,48,22,4,11,6,5,梅林 19-Nov-2011,32,31,1,34,29,36,45,3,亚瑟 2011 年 11 月 16 日,26,40,39,27,10,12,20,1,GUINEVERE 12-Nov-2011,28,13,12,33,6,38,10,14,亚瑟 09-Nov-2011,27,2,8,32,23,10,44,1,GUINEVERE 05-Nov-2011,14,24,39,23,16,27,43,8,兰斯洛特 02-Nov-2011,12,38,11,33,37,49,3,2,GUINEVERE 2011 年 10 月 29 日,49,14,5,28,9,46,45,1,GUINEVERE 2011 年 10 月 26 日,4,23,34,41,38,39,27,4,GUINEVERE 2011 年 10 月 22 日,20,43,27,44,28,34,1,4,亚瑟 2011 年 10 月 19 日,13,18,34,49,32,14,20,3,GUINEVERE 2011 年 10 月 15 日,41,7,12,46,34,27,14,2,亚瑟 2011 年 10 月 12 日,37,26,40,25,13,24,30,3,阿瑟
创建页面地址的 URL 表示。打开与 URL 的连接。建立输入流。从流中读取所有数据。这将是页面源。
URL url = new URL("https://www.national-lottery.co.uk/player/p/results.ftl");
URLConnection connection = url.openConnection();
InputStream stream = connection.getInputStream();
byte[] data = new byte[stream.available()];
stream.read(data);
stream.close();
String source = new String(data);
除非该站点提供允许查询彩票号码的 API 或 Web 服务,否则您可能必须抓取页面的 html 源代码。看起来数字存储在一个简单的 html 列表中:
<ul>
<li>12</li>
<li>16</li>
<li>23</li>
<li>25</li>
<li>31</li>
<li>42</li>
<li class="bonus">18</li>
</ul>
那里有很多优秀的 Java HTML 解析器。这里有几个项目:
我环顾了您感兴趣的网站,似乎他们有一个“历史”页面,其中包含几天的彩票号码:
https://www.national-lottery.co.uk/player/lotto/results/results.ftl
这可能是一个更好的页面。