-1
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 = "";

就像我说的,它似乎对其他人有用,而不是对我有用!提前致谢!

4

2 回答 2

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();
    }

}
于 2013-10-13T12:42:04.893 回答
0

URL 是 en.wikipedia.org(用于英文页面),而不是 www.wikipedia.org。

于 2013-10-13T13:03:30.497 回答