我试图解析此页面。
http://www.oddsportal.com/hockey/czech-republic/extraliga/plzen-liberec-QaikxB6H/#over-under;2
我想通过点击其中一条线上/下或比较赔率来获得表中的信息。我的目标是获得超过/低于+5.5的表格。
我成功获取了HtmlAnchor和OnClickAttribute,但是后来没有加载新页面,当然页面链接与原始链接相同。
以下是我使用的代码的一部分。
establish_connection
有人可以帮助我找到解决方案或找出不同的方法吗?
编辑:
感谢回复。我尝试了你的代码,但是我遇到条件错误(类型不匹配:无法从元素类型捕获#1-of?转换为HtmlElement)。
无论如何,我试图使用您在里面发布的代码:
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
....
List<HtmlElement> links = div.getElementsByAttribute("a", "class", "more");
for (int k = 0; k<links.size(); k++) {
if (links.get(k).getOnClickAttribute().toString().contains("P-5.50")) {
links.get(k).click();
webClient.waitForBackgroundJavaScript(10000);
webClient.waitForBackgroundJavaScriptStartingBefore(10000);
System.out.println(page1X2.getUrl().toString());
file = new File("./test3.csv");
fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);
bw.write(page1X2.asText());
bw.close();
System.out.println("Done");
break;
}
}
但是当打印table.asText()时,url仍然是相同的url和一个null指针异常。
我的目标是从网站获得赔率。我想在所有比赛中循环。我的期望是获得1x2和U / O 5,5的赔率。我得到的错误是这部分代码
List<HtmlElement> links = div.getElementsByAttribute("a", "class", "more");
for (HtmlElement anchor : links) {
if (anchor.getOnClickAttribute().contains("P-5.50")) {
anchor.click();
HtmlElement parent = (HtmlElement) anchor.getParentNode().getParentNode().getParentNode();
HtmlTable table = parent.getFirstByXPath(".//table");
System.out.println(page1X2.getUrl().toString());
System.out.println(table.asText());
}
}
返回0,所以我无法获得表格。
System.out.println(page1X2.<HtmlElement>getByXPath("//a[@class='more']").size());
}
答案 0 :(得分:1)
当您点击真实浏览器时,页面是相同的,但URL会更改。
使用HtmlUnit
完成同样的事情:
try (WebClient webclient = new WebClient()) {
HtmlPage page = webclient.getPage("http://www.oddsportal.com/hockey/czech-republic/extraliga/plzen-liberec-QaikxB6H/#over-under;2");
for (HtmlElement anchor : page.<HtmlElement>getByXPath("//a[@class='more']")) {
if (anchor.getOnClickAttribute().contains("P-5.50")) {
anchor.click();
HtmlElement parent = (HtmlElement) anchor.getParentNode().getParentNode().getParentNode();
HtmlTable table = parent.getFirstByXPath(".//table");
System.out.println(table.asText());
System.out.println(table.asXml());
}
}
}
在XPath中,.
表示来自此节点,/
表示直接子节点,//
表示递归子节点或孙子节点,@class='more'
表示查找属性class
}值more
。