Соскребание сайта, управляемого Java, с помощью Selenium, BS - PullRequest
0 голосов
/ 01 февраля 2019

Я довольно новичок в Python

Я пытаюсь получить значение счетчика принтера с его веб-сайта.Веб-сайт на Javascript, и я не могу ничего с него почистить.

Элементы сайта выглядят так, и мне нужно значение для выделенного элемента.

проверка элементов

Я пытался использовать селен, запросы, веб-драйвер, beautifulsoup.

Перепробовал все методы webdriver.find и т. Д.

Мой последний код выглядит следующим образом, я пробовал кучу другихвещи, но ничего не получили.

from bs4 import BeautifulSoup
import requests
from selenium import webdriver


#url = requests.get('http://url')
#soup = BeautifulSoup(url.text, 'lxml')


driver = webdriver.Chrome('C:/Chrome/Driver/Path')
url = 'http://url'
get = driver.get(url)

html = driver.execute_script("return document.documentElement.outerHTML")

print(html)

Я ничего не могу вычистить с веб-страницы, не могу получить доступ к текстовому полю с Xpath, Class, ID или чем-то еще.

Я могу успешно получить элементыс других сайтов, кроме этого принтера.

Спасибо за помощь

Ответы [ 2 ]

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

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

 driver.switch_to.frame(0)

Выше должно работать, если это первый фрейм.Тогда driver.page_source и ваши локаторы должны начать работать.

Я объяснил это чуть более подробно в этом ответе

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

Что это распечатывает?

Я не думаю, что эта строка будет возвращать HTML-текст

driver.execute_script("return document.documentElement.outerHTML")

Вам необходимо использовать атрибут page_source для доступа к HTML насколько это возможнокак я знаю ...

 driver.execute_script("return document.documentElement.outerHTML")
 html = driver.page_source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...