webscraping Java, зависая мышь.Динамические данные не отображаются после очистки - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу собрать данные с графика определенного веб-сайта.Эта информация на графике доступна только в том случае, если вы наведите указатель мыши на график. Но после того, как я поцарапал, я не могу увидеть данные в выводе, даже если они видны в разделе «Проверка элемента».

Я пытался очистить с помощью JSoup, но когда я очищаю данные, данные, которые изменяются при наведении мыши, не отображаются.Как я могу это сделать?

Ниже приведена информация, которую я должен почистить.Я должен очистить динамически изменяющееся значение «184».

The value 184 is dynamically changing when you hover mouse on graph wit h RGB values displyaed in the above line

Значение 184 динамически меняется, когда вы наводите курсор мыши на график с отображаемыми значениями RGBв приведенной выше строке.Даже эти значения RGB изменяются при наведении мыши на график.

После соскоба вывод документа Jsoup выглядит следующим образом: Значения числа 184 и rgb не отображаются.Как эти поля исчезли в выводе?Разве это не появляется, потому что это динамические данные при наведении мыши?

enter image description here

Мне на самом деле нужно соскоблить информацию со следующего графика, который отображает «Интенсивность углерода»'значение из графика "Углеродная интенсивность за последние 24 часа" только при наведении на него мыши.

enter image description here

Я застрял с этой проблемой в течение двух дней и не нашел никакого полезного решения.Я использую Jsoup на Linux. Кто-нибудь может подсказать мне, как я могу это сделать.Заранее спасибо!

1 Ответ

0 голосов
/ 09 ноября 2018

Для этого вам следует использовать Selenium и добавить его в Maven , если вы его используете, или в любой другой менеджер зависимостей, который вы используете.Как только вы это сделаете, вам нужно добавить этот .exe (https://github.com/mozilla/geckodriver/releases) в папку вашего проекта, чтобы получить поддержку Firefox для Selenium, вы также можете использовать Google Chrome после этогоtutorial (https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver).

У вас есть много уроков о том, как заставить JS веб-страницы получать ее содержимое, но это может быть что-то вроде этого, чтобы установить мышьповерх элемента из HTML:

WebDriver webDriver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor)webDriver;
webDriver.get(URL); // You have to place the URL you are crawling here

Actions action = new Actions(webDriver);
WebElement webElement = webDriver.findElement(By.id("country-emission-rect));

// using By you have a lot more options to select HTML content, I guess you want to place the mouse over that item in particular, but you can change if it it's another one
action.moveToElement(webElement).perform();

WebDriverWait webDriverWait = new WebDriverWait(webDriver, 15); // wait max 15 seconds

// wait until the element with class name: "country-emission-intensity" is loaded
webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.className("country-emission-intensity")));

// get the HTML generate after the mouse over that now has the text you want to get
String fullHtml = webDriver.getPageSource();
webDriver.quit();

Если вы хотите продолжать использовать JSOUP вместо Selenium для списания, вы можете теперь сделать:

Document document = Jsoup.parse(fullHtml);

Помнитепоместить .exe в папку вашего проекта и правильно установить все зависимости Selenium (включив автоматический импорт, если вы используете Maven).

Надеюсь, это помогло вам! Если вам нужно что-то еще, не стесняйтесь спрашивать!

...