如何将 Jsoup 输出存储在 ArrayList 中?



>我用Jsoup解析了一个网站并提取了链接。现在我尝试将该链接的一部分存储在 ArrayList 中。不知何故,我无法一次存储一个链接。

我尝试了几种字符串方法,Scanner和BufferedReader都没有成功。

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class DatenImportUnternehmen {

public static void main(String[] args) throws IOException {
ArrayList<String> aktien = new ArrayList<String>();
String searchUrl = "https://www.ariva.de/aktiensuche/_result_table.m";

for(int i = 0; i < 1; i++) {
String searchBody = "page=" + Integer.toString(i) + 
"&page_size=25&sort=ariva_name&sort_d=asc 
&ariva_performance_1_year=_&ariva_per 
formance_3_years=&ariva_performance_5_years= 
&index=0&founding_year=&land=0&ind 
ustrial_sector=0&sector=0&currency=0 
&type_of_share=0&year=_all_years&sales=_&p 
rofit_loss=&sum_assets=&sum_liabilities= 
&number_of_shares=&earnings_per_share= 
&dividend_per_share=&turnover_per_share= 
&book_value_per_share=&cashflow_per_sh 
are=&balance_sheet_total_per_share= 
&number_of_employees=&turnover_per_employee 
=_&profit_per_employee=&kgv=_&kuv=_&kbv=_&dividend 
_yield=_&return_on_sales=_";

// post request to search URL
Document document = 
Jsoup.connect(searchUrl).requestBody(searchBody).post();
// find links in returned HTML
for(Element link:document.select("a[href]")) {
String link1 = link.toString();
String link2 = link1.substring(link1.indexOf('/'));
String link3 = link2.substring(0, link2.indexOf('"'));

aktien.add(link3);
System.out.println(aktien);
}
}

}
}                             

我的输出看起来像(只是其中的一部分(:

[/1-1_drillisch-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie, /21st- 
_cent-_fox_b_new-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie, /21st- 
_cent-_fox_b_new-aktie, /21st_century_fox-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie, /21st- 
_cent-_fox_b_new-aktie, /21st_century_fox-aktie, /2g_energy-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie, /21st- 
_cent-_fox_b_new-aktie, /21st_century_fox-aktie, /2g_energy-aktie, 
/3i_group-aktie]
[/1-1_drillisch-aktie, /11_88_0_solutions-aktie, /1st_red-aktie, /21st- 
_cent-_fox_b_new-aktie, /21st_century_fox-aktie, /2g_energy-aktie, 
/3i_group-aktie, /3i_infrastructure-aktie] 

我想要实现的是:

[/1-1_drillisch-aktie]
[/11_88_0_solutions-aktie]
[/1st_red-aktie]
[/21st-_cent-_fox_b_new-aktie]

等等。

我现在只是不知道现阶段的问题是什么。

您的问题是您在循环中添加数组的同时正在打印数组。

要解决此问题,您可以在数组外部打印数组以一次性打印所有内容,也可以打印link3(这是您要添加到 ArrayList 的内容(,而不是循环中的数组。

选项 1:

for(Element link:document.select("a[href]")) {
String link1 = link.toString();
String link2 = link1.substring(link1.indexOf('/'));
String link3 = link2.substring(0, link2.indexOf('"'));
aktien.add(link3);
}
System.out.println(aktien);

选项 2:

for(Element link:document.select("a[href]")) {
String link1 = link.toString();
String link2 = link1.substring(link1.indexOf('/'));
String link3 = link2.substring(0, link2.indexOf('"'));
aktien.add(link3);
System.out.println(link3);
}

最新更新