Вопрос или проблема
Я пытаюсь получить коэффициент “Потребность/Желание” в свою таблицу, так как это единственная часть, которая может измениться и которая мне нужна.
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: Извлечение данных с веб-сайта
-
Подготовьте приложение на Java:
Убедитесь, что у вас установлен Java SDK и соответствующая IDE (например, IntelliJ IDEA или Eclipse). -
Добавьте необходимые библиотеки:
Вам потребуются библиотеки для работы с HTTP-запросами и для парсинга HTML. Рекомендуется использовать библиотеку Jsoup. Добавьте зависимость в ваш проект:<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.14.2</version> <!-- Проверьте актуальную версию --> </dependency>
-
Создайте класс для извлечения данных:
Пример кода для извлечения "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
-
Настройка Google Sheets API:
- Вам нужно создать проект в Google Developer Console.
- Включите API Google Sheets для вашего проекта.
- Создайте учетные данные для доступа к API и загрузите файл
credentials.json
.
-
Добавьте зависимости для работы с 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>
-
Написание кода для записи в 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. Обязательно протестируйте код и корректируйте селекторы и параметры по мере необходимости. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.