import java.io.*;
import java.net.*;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class SWS {
public static void main(String[] args) {
scrapeTopic("/wiki/Python");
}
public static void scrapeTopic(String url) {
String html = getUrl("http://www.wikipedia.org/" + url);
Document doc = Jsoup.parse(html);
String contentText = doc.select("p").first().text();
System.out.println(contentText);
}
public static String getUrl(String Url) {
URL urlObj = null;
try {
urlObj = new URL(Url);
} catch (MalformedURLException e) {
System.out.println("The url was malformed");
return "";
}
URLConnection urlCon = null;
BufferedReader in = null;
String outputText = "";
try {
urlCon = urlObj.openConnection();
in = new BufferedReader(new InputStreamReader(
urlCon.getInputStream()));
String line = "";
while ((line = in.readLine()) != null) {
outputText += line;
}
in.close();
}
catch (IOException e) {
System.out.println("There was a problem connecting to the url");
return "";
}
return outputText;
}
}
其他人已经尝试过了,它有效,但不适合我。唯一可行的是当我使用"*"
但返回整个页面并且格式错误时,例如
}k��q�g�h6c��y����(� ...
我也尝试过"mw-content-text > p"
,这肯定在 wiki 页面中。
对于一直关注此代码的任何人,我深表歉意,但我似乎无法抓取 html 页面中最简单的内容。
这是我在选择方法中使用“p”时收到的输出:
Exception in thread "main" java.lang.NullPointerException
at sws.SWS.scrapeTopic(SWS.java:43)
at sws.SWS.main(SWS.java:27)
Java Result: 1
第 43 行是:
String contentText = doc.select("p").first().text();
第 27 行是:
scrapeTopic("/wiki/Python");
我目前正在使用 Netbeans。我不确定这是否相关,但 Netbeans 用黄色强调以下行,并显示消息“从未使用分配的值”
URL urlObj = null;
URLConnection urlCon = null;
BufferedReader in = null;
String line = "";
就像我说的,它似乎对其他人有用,而不是对我有用!提前致谢!