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

他の人が試してみましたが、うまくいきましたが、私には合いませんでした。動作する唯一のことは、私が使用するときです"*"が、それはページ全体を間違った形式で返します
.

私も試してみ"mw-content-text > p"ましたが、これは間違いなくwikiページにあります。

このコードに目を向け続けている人には申し訳ありませんが、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 = "";

私が言ったように、それは私ではなく他の人にとってはうまくいくようです! 前もって感謝します!

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 は www.wikipedia.org ではなく、en.wikipedia.org (英語ページの場合) です。

于 2013-10-13T13:03:30.497 に答える