我最近开始使用Selenium作为我抓取的网站更新为javascript,在寻求一些建议后,Selenium被推荐为这种情况下的首选程序。
使用Selenium我现在可以抓取网站和"粗略地"得到我想要的但我想要一些关于如何选择我在爬桌时收集的不同元素的指导。 例如,当我使用J-Soup收集数据时,我得到整个表,如下所示:
docVTS = Jsoup.connect("http://********************").timeout(10000).get();
Elements table = docVTS.select("table.dynlist");
然后我可以像这样收集该表的不同部分:
Elements number = table.select("td:eq(0)");
vtsInt = number.size();
for (int i = 0; i < vtsInt; i++) {
ships = table.select("td:eq(1)").get(i).text().replace(" ","");
arr_ships.add(ships);
dwt = table.select("td:eq(3)").get(i).text().replace(" ","");
arr_dwt.add(dwt);
是否可以对Selenium做同样的事情?
我目前有:
String text = driver.findElement(By.xpath("//div[@id='cphBody_Report_grid']")).getText();
这得到了表格,但我不确定如何选择表格的不同部分,就像我在j-soup中一样。 我欢迎任何建议。谢谢。
编辑:我发现这个CookBook适用于Selenium和选择器,并且从selenium开始时发现它非常有用:https://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom-and-selenium-the-rosetta-stone/
答案 0 :(得分:1)
回答这个问题。是的,这是可能的。
获取表格行tds
List<WebElement> rowData = findElements(By.cssSelector("table tr td"));
For (WebElement we : rowData) {
//do something with the tds
}