Jsoup解析多个网站以获取今天发布的链接

时间:2018-07-31 22:51:33

标签: web-scraping jsoup

我目前正在使用jsoup(如下)从一个网站输出一个.csv链接,该链接在URL中包含字符串日期格式。

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.FileOutputStream;
import java.io.PrintStream;
import org.jsoup.nodes.Element;

public class readAllLinks {

    public static Set<String> uniqueURL = new HashSet<String>();
    public static String my_site;
    public static String published = ("20180731");

    public static void main(String[] args) {

        readAllLinks obj = new readAllLinks();
        my_site = ("news24.com/SouthAfrica/News");
        obj.get_links("https://www.news24.com/SouthAfrica/News/");
    }

    private void get_links(String url) {
        try {
            Document doc = Jsoup.connect(url).get();
            Elements links = doc.select("a");

            FileOutputStream fout=new FileOutputStream("links.csv");  
            PrintStream csv=new PrintStream(fout);  
            links.stream().map((link) -> link.attr("abs:href")).forEachOrdered((this_url) -> {
                boolean add = uniqueURL.add(this_url);
                if (add && this_url.contains(my_site) && this_url.contains(published)) {
                    System.out.println(this_url);
                    get_links(this_url);
                    }

                if (this_url.contains(published))
                    csv.println(this_url);
            } );    

        } catch (IOException ex) {

        }

    }
}

相反,我想制作多个网站今天发布的链接的csv(即使用今天的日期)。

如何为新发布的链接指定.select以获取跨度中包含的日期?

您如何解析列表中的多个网站?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这将选择所有包含变量“已发布”值的链接。

Elements links = doc.select("a[href*="+published+"]");