Извлечение данных URL-адреса Jsoup с помощью jsoup.connect (), вызывающего IOException, поскольку URL-адрес веб-сайта изменился с http на https - PullRequest
0 голосов
/ 04 мая 2020
package com.datascraper.mine;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

class MainWork implements Confidencial {

    public List<String> fetchData() {
        List<String> list = new ArrayList<>();
        try {

            Document document = Jsoup.connect("https://mytachyon.in/synnefoclient/")
                    .data(LOGFORMUSER, USERNAME)
                    .data(LOGFROMPASS, PASSWORD)
                    .data(LOGACTION, ACTION)
                    .post();

            System.out.println(document.title());

            list.add("\n=============My Details==============");

            Elements element = document.select("table");
            Elements elements = element.select("td");

            String details[] = new String[16];

            int linebreaker = 0;
            for (Element ele : elements) {
                if (!ele.text().equals("")) {
                    if (linebreaker % 2 == 0) {

                        details[linebreaker] = ele.text() + " => ";

                    } else {
                        details[linebreaker] = ele.text();

                    }
                    if (ele.text().equals("Current Complaint Status") && ele.nextElementSibling().text().equals("")) {

                        details[++linebreaker] = "None";
                    }
                    linebreaker++;
                }

            }

            for (int i = 0; i < details.length; i += 2) {
                list.add(details[i] + details[i + 1]);
            }

            /*-------------------Data Details--------------------*/

            list.add("==========Plan Details============");

            Elements values = document.select("div.col-lg-5");
            Elements keys = document.select("div.col-lg-7");

            String[] data = new String[12];
            int index = 1;

            for (Element el : values) {
                data[index] = el.text();
                index += 2;
            }

            index = 0;
            for (Element el : keys) {
                data[index] = el.text();
                index += 2;
            }
            for (int i = 0; i < data.length; i += 2) {
                list.add(data[i] + " => " + data[i + 1]);
            }

        } catch (IOException e) {
            System.out.println("Error occured");
        }

        return list;
    }

}

Недавно URL = https://mytachyon.in/synnefoclient/ изменился с http на https. Я пытался запустить код, изменив его на https, но каждый раз он выдает IOException. Я пытался открыть различные другие сайты, и это работает без нареканий. Затем я попытался выполнить вход по URL = https://mytachyon.in/synnefoclient/ с помощью команды curl, и он отлично выбирает данные.

Confidencial - это интерфейс, который содержит мой идентификатор пользователя, пароль в формате заголовка запроса

Приведенный выше код в основном входит в мою учетную запись провайдера и получает некоторые данные, такие как данные, используемые до сих пор, оставшиеся данные и т. Д. c. Команда Curl для входа и получения данных работает нормально. Я не знаю, что не так. Ниже приведены мои команды curl, которые я использую для входа и получения данных, а затем сохраняю их в файл output.txt.

curl -c cookie.txt -d "LoginForm[username]=XXXXX" -d "LoginForm[password]=XXXXX" -d "yt0=Log In" https://mytachyon.in/synnefoclient/
curl -b cookie.txt https://mytachyon.in/synnefoclient/SOME_TOKENXXXXX > output.txt
...