我是编码新手。
我正在尝试用一张经纪人网站的资金清单对表格进行网上报废。代码工作正常,但是ut只返回列表的一部分(比列表的前半部分要多一点),我不知道为什么
我已经检查了html strucutre和标签,一切似乎都正确……
int count = 0;
String URL = "https://institucional.xpi.com.br/investimentos/fundos-de-investimento/lista-de-fundos-de-investimento.aspx";
try {
Document doc = Jsoup.connect(URL).userAgent("Mozilla/17.0").get();
for (Element table: doc.select("#tableTodos tr")) {
Elements tds = table.getElementsByTag("td");
if (tds.size() > 0) {
count++;
System.out.println(count + " - " + tds.get(2).text());
}
这是退货的最后一部分
138 - Kapitalo Kappa FIN FIC FIM
139 - Kapitalo Tarkus FIC FIA
140 - Kinea Atlas II FIM
141 - Kinea Chronos FIM
142 - Kinea RF Absoluto FI LP
143 - Leblon Ações FIC FIA
144 - Legacy Capital Advisory FIC FIM
145 - Legg Mason Clearbridge US Large Cap Growth FIA IE
146 - Legg Mason Martin Currie European Absolute Alpha FIM IE
147 - Mauá Capital Ações FIC FIA
只有147条,网站上的表格有300多行...
答案 0 :(得分:0)
您应该使用“ tr”标签而不是td搜索表中的元素。它将为您提供表中的所有行。然后在每一行中搜索td并打印其文本。
编辑1:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.2840.100 Safari/537.36");
driver = new ChromeDriver(chromeOptions);
chromeDriver.get("https://institucional.xpi.com.br/investimentos/fundos-de-investimento/lista-de-fundos-de-investimento.aspx");
List<WebElement> elements = chromeDriver.findElement(By.xpath("//*[@id=\"tableTodos\"]")).findElements(By.tagName("tr"));
System.out.println(elements.get(200).getText());
编辑2:
为您的通话添加maxBodySize:
Document doc = Jsoup.connect(URL).timeout(0).maxBodySize(0).get();