Получение простых данных с веб-сайта, использующего Java, в Google Sheets

Вопрос или проблема

Я пытаюсь получить коэффициент “Потребность/Желание” в свою таблицу, так как это единственная часть, которая может измениться и которая мне нужна.
https://www.laststicker.com/cards/panini_fifa_365_2024-2025_adrenalyn_xl/

У меня есть образец таблицы:
https://docs.google.com/spreadsheets/d/1jKQVFQkluR_zORArAyPjO69VHjV3CB5esA0uVUVgp8I/edit?gid=0#gid=0
A1 — это URL, который указывает на вышеупомянутое, H3 — это место, где раньше находился старый IMPORTHTML.

IMPORTHTML работал отлично до прошлого месяца, похоже, администратор теперь использует Javascript.
Я пытался скопировать некоторые скрипты, которые нашел здесь, и адаптировать их, но это совсем не сработало.

Ответ или решение

Для того чтобы получить "Need/Want" Ratio с веб-сайта, который использует JavaScript для отображения данных, необходимо использовать Java для извлечения данных и затем отправить результаты в Google Sheets. К сожалению, функция IMPORTHTML в Google Sheets не может обрабатывать динамически загружаемые данные, поэтому потребуется другой подход.

Шаг 1: Извлечение данных с веб-сайта

  1. Подготовьте приложение на Java:
    Убедитесь, что у вас установлен Java SDK и соответствующая IDE (например, IntelliJ IDEA или Eclipse).

  2. Добавьте необходимые библиотеки:
    Вам потребуются библиотеки для работы с HTTP-запросами и для парсинга HTML. Рекомендуется использовать библиотеку Jsoup. Добавьте зависимость в ваш проект:

    <dependency>
       <groupId>org.jsoup</groupId>
       <artifactId>jsoup</artifactId>
       <version>1.14.2</version> <!-- Проверьте актуальную версию -->
    </dependency>
  3. Создайте класс для извлечения данных:
    Пример кода для извлечения "Need/Want" Ratio:

    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    
    public class DataFetcher {
       public static void main(String[] args) {
           try {
               String url = "https://www.laststicker.com/cards/panini_fifa_365_2024-2025_adrenalyn_xl/";
               Document doc = Jsoup.connect(url).get();
               Element ratioElement = doc.select("css-селектор-для-Need/Want-Ratio").first(); // Определите правильный CSS-селектор
               String ratio = ratioElement.text();
               System.out.println("Need/Want Ratio: " + ratio);
               // Здесь вы можете добавить код для отправки данных в Google Sheets
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
    }

    Примечание: Замените css-селектор-для-Need/Want-Ratio на фактический CSS-селектор, который указывает на нужный элемент на странице.

Шаг 2: Отправка данных в Google Sheets

  1. Настройка Google Sheets API:

    • Вам нужно создать проект в Google Developer Console.
    • Включите API Google Sheets для вашего проекта.
    • Создайте учетные данные для доступа к API и загрузите файл credentials.json.
  2. Добавьте зависимости для работы с Google Sheets API:
    Добавьте следующие зависимости в ваш проект:

    <dependency>
       <groupId>com.google.api-client</groupId>
       <artifactId>google-api-client</artifactId>
       <version>1.32.1</version>
    </dependency>
    <dependency>
       <groupId>com.google.oauth-client</groupId>
       <artifactId>google-oauth-client-jetty</artifactId>
       <version>1.32.1</version>
    </dependency>
    <dependency>
       <groupId>com.google.apis</groupId>
       <artifactId>google-api-services-sheets</artifactId>
       <version>v4-rev20220105-1.32.1</version>
    </dependency>
  3. Написание кода для записи в Google Sheets:
    Пример функции отправки данных в Google Sheets:

    import com.google.api.services.sheets.v4.Sheets;
    import com.google.api.services.sheets.v4.model.ValueRange;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.json.jackson2.JacksonFactory;
    
    //... (подключите необходимые библиотеки и авторизацию)
    
    public void writeToSheet(String ratio) throws Exception {
       Sheets sheetsService = getSheetsService();
       String spreadsheetId = "1jKQVFQkluR_zORArAyPjO69VHjV3CB5esA0uVUVgp8I"; // Ваш ID таблицы
       String range = "Sheet1!H3"; // Укажите нужный диапазон
    
       ValueRange body = new ValueRange().setValues(Arrays.asList(Arrays.asList(ratio)));
       sheetsService.spreadsheets().values().update(spreadsheetId, range, body)
           .setValueInputOption("RAW")
           .execute();
    }

Заключение

В этом ответе описан полный процесс извлечения данных с веб-сайта, который использует JavaScript, и их последующей отправки в Google Sheets с помощью Java. Обязательно протестируйте код и корректируйте селекторы и параметры по мере необходимости. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...