Python3 Веб-страница Scraping Printer не работает с Selenium - PullRequest
0 голосов
/ 09 марта 2020

Заранее хочу извиниться, если я неправильно задаю вопрос или не следую ни одному правилу. Раньше я был главным администратором сетевой безопасности и недавно начал свое Python исследование. После небольшой практики я захотел написать свой первый код, который получит уставки «картриджа» от моих принтеров. Проблема в том, что мой принтер возвращает почти пустой результат для моих запросов get. После небольшого исследования я понял, что это может быть JS визуализированный вывод, и поэтому я не вижу полного результата. Я пытался реализовать свой код с помощью Selenium, но снова ничего не получилось.

Это домашняя страница принтера, на которой я вижу статус картриджа

Это источник страницы и как вы видите, вывод выводится

Сетевые запросы 1 из проверки источника

Сетевые запросы 2 из проверки

Источники из проверки

import requests
from bs4 import BeautifulSoup
import re
from selenium import webdriver
import time

URL = 'http://192.168.x.x'
driver = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
driver.get(URL)
time.sleep(10)

# results = driver.find_element_by_xpath("//*[@id='tonerid']")

html = driver.execute_script("return document.documentElement.outerHTML")
soup = BeautifulSoup(html, "html.parser")
body = soup.find("body", {"id": "tonerpage"})

print(body)
driver.quit()

Прокомментированный раздел - другой способ, которым я пробовал, но безрезультатно. Выход такой же, как и без селена. У меня есть принтеры другого типа, которые не имеют JS, где я выполнил код и мог получить необходимую информацию.

Любая помощь приветствуется! Заранее спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Итак, я наконец-то обнаружил, в чем была проблема с моим случаем и почему селен не принес результата. Изучив источник, я выяснил, что искомый элемент находится внутри «iframe», который снова находится внутри другой «рамки». Мне пришлось переместиться внутрь фрейма и снова в iframe, используя строки ".switch_to.frame ()".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...