我想提取给定 URL 的文章文本。
你知道它是否存在一些能够做到这一点的库或现有代码?
这是一个 URL 示例:http: //fr.news.yahoo.com/france-foot-pro-vote-gr%C3%A8ve-fin-novembre-contre-125358890.html
谢谢
问候
我想提取给定 URL 的文章文本。
你知道它是否存在一些能够做到这一点的库或现有代码?
这是一个 URL 示例:http: //fr.news.yahoo.com/france-foot-pro-vote-gr%C3%A8ve-fin-novembre-contre-125358890.html
谢谢
问候
你需要使用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/
我特别喜欢使用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);
}
}