Java - Невозможно получить открытый текст HTML с веб-сайта - PullRequest
0 голосов
/ 19 февраля 2019

У меня странная проблема.В прошлом я использовал программу, которую написал сам, чтобы проверить, появилась ли новая глава в истории на fanfiction.net, и эта программа работает отлично даже сейчас (хотя ее графический интерфейс оставляет желать лучшего).

Однако, когда я пытаюсь создать новую версию, я не могу загрузить веб-страницу, хотя я использую точно такой же код (Copy Pasted).Это код ниже.При отправке URL-адреса типа https://www.fanfiction.net/s/11012678/36 методу nextExists он должен возвращать значение «true».Моя старая программа работает, но эта не такая, хотя это тот же код.

Единственное, о чем я могу думать, это может иметь какой-то эффект, это то, что я использую новую версию Eclipse, которая может вызватьэто ошибка кодировки, но я попытался проверить все распространенные типы кодирования, и ничто не обеспечивает открытый текст HTML.

Кто-нибудь знает, что может быть причиной этого?Это не катастрофа, если я не могу понять это правильно, но я хотел бы знать на будущее, если я снова столкнусь с той же проблемой.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class Util {
    private static final String BEFORE = "<button class=btn TYPE=BUTTON onClick=\"self.location='", AFTER = "'\">Next &gt;</button>", SITE = "fanfiction.net";

    public static String readSite(String path) throws Exception{
        URL url = new URL(path);
        BufferedReader in = null;
        String line;
        try{
            StringBuilder builder = new StringBuilder();
            in = new BufferedReader(new InputStreamReader(url.openStream()));
            line = in.readLine();
            if(line == null){
                return null;
            }
            builder.append(line);
            while((line = in.readLine()) != null){
                builder.append('\n' + line);
            }
            return builder.toString();
        } finally{
            if(in != null){
                in.close();
            }
        }
    }

    public static String updatePathToEnd(String path) throws Exception{
        outer: while(nextExists(path)){
            String data = readSite(path);
            if(path.contains(SITE)){
                String link = path.substring(0, path.indexOf(SITE) + SITE.length()) + data.substring(data.indexOf(BEFORE) + BEFORE.length(), data.indexOf(AFTER));
                if(readSite(link) != null) {
                    path = link;
                    continue outer;
                }
            }
        }
        return path;
    }

    public static boolean nextExists(String path) throws Exception{
        String text = readSite(path);
        if(path.contains(SITE)){
            return text==null ? false : text.contains(AFTER);
        }
        return false;
    }

}

1 Ответ

0 голосов
/ 20 февраля 2019

Я пробовал в bluej и работает отлично, похоже, проблема в Eciplse С уважением

...