2

我想提取给定 URL 的文章文本。

你知道它是否存在一些能够做到这一点的库或现有代码?

这是一个 URL 示例:http: //fr.news.yahoo.com/france-foot-pro-vote-gr%C3%A8ve-fin-novembre-contre-125358890.html

谢谢

问候

4

2 回答 2

1

你需要使用JTomatoSoup它的用途是:

从 URL、文件或字符串中抓取和解析 HTML
查找和提取数据,使用 DOM 遍历或 CSS 选择器
操作 HTML 元素、属性和文本
根据安全白名单清理用户提交的内容,以防止 XSS
攻击HTML

该网站也有一个简单的入门示例,但这里有一个来自Mykong的 SSCCE:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class HTMLParserExample1 {

  public static void main(String[] args) {

    Document doc;
    try {

        // need http protocol
        doc = Jsoup.connect("http://google.com").get();

        // get page title
        String title = doc.title();
        System.out.println("title : " + title);

        // get all links
        Elements links = doc.select("a[href]");
        for (Element link : links) {

            // get the value from href attribute
            System.out.println("\nlink : " + link.attr("href"));
            System.out.println("text : " + link.text());

        }

    } catch (IOException e) {
        e.printStackTrace();
    }

  }

}  

网站:http: //jsoup.org/

于 2013-10-24T14:17:27.980 回答
0

我特别喜欢使用Apache HTTPClient库。您可以非常轻松地创建 HTTP 请求并根据需要解析结果。这是一个使用您的 URL(但没有解析)的非常简单的示例。

import java.io.IOException;

import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;


public class Test {

    public static void main(String[] args) throws ParseException, IOException {     
        DefaultHttpClient httpclient = new DefaultHttpClient();     

        HttpGet httpget = new HttpGet("http://fr.news.yahoo.com/france-foot-pro-vote-gr%C3%A8ve-fin-novembre-contre-125358890.html");
        HttpResponse response = httpclient.execute(httpget);
        String responseText = EntityUtils.toString(response.getEntity());
        EntityUtils.consumeQuietly(response.getEntity());

        System.out.println(responseText);
    }

}
于 2013-10-24T14:18:30.140 回答