0

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

我尝试了几种 String 方法,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]

等等。

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

4

1 回答 1

0

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

要解决此问题,您可以打印数组外部的数组以一次性打印所有内容,或者您​​可以打印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);
}
于 2019-08-19T16:13:00.900 回答