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"
,这肯定是在维基页面。
我为那些一直关注这段代码的人道歉,但我似乎无法抓住html页面中最简单的东西。
这是我在select方法中使用“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 = "";
就像我说的,它似乎适用于其他人而不适合我! 在此先感谢!
答案 0 :(得分:1)
如果您只是让jsoup连接到维基百科页面,它就会起作用。
public static void scrapeTopic(String url)
{
Document doc;
try {
doc = Jsoup.connect("http://www.wikipedia.org/" + url).get();
String contentText = doc.select("p").first().text();
System.out.println(contentText);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 1 :(得分:0)
网址为en.wikipedia.org(英文网页),而不是www.wikipedia.org。