Скрапинг «простого» PoE-Switch с динамической загрузкой внутреннего сайта

Я пытаюсь получить один номер с внутреннего сайта моего коммутатора TP-Link. Когда я вхожу с помощью следующего codeа:

...я попадаю на эту страницу:

введите описание изображения здесь

Чтобы получить нужный мне номер, мне нужно нажать на кнопку "PoE". Но кнопки, к которой я могу обратиться с помощью Selenium, нет. Она генерируется после события щелчка. Но как мне инициировать это событие нажатия с помощью Selenium.

Вот html-структура, в которой находится мое нужное число:

введите описание изображения здесь

Когда я смотрю на исходный кадр ссылки "PoE", я вижу это:

Там вы можете видеть, что только кнопка "Выход" доступна все время, все остальное динамически генерируется.

Может быть, кто-то может дать мне подсказку?! Думаю, единственное, что мне нужно решить, это отсутствующее событие нажатия кнопки "PoE". Потому что как только эта кнопка нажата, она раскрывает свое содержимое.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time

username = "user"
password = "pass"

driver = webdriver.Chrome()

driver.get('http://internal-ip')

time.sleep(3)

username_field = driver.find_element(By.NAME, "username") # Name oder ID des Benutzername-Feldes
password_field = driver.find_element(By.NAME, "password") # Name oder ID des Passwort-Feldes

username_field.send_keys(username)
password_field.send_keys(password)
password_field.send_keys(Keys.RETURN)

time.sleep(3)

driver.quit()
<!DOCTYPE html>
<html>
   <head>
      <script>document.write(top.Abbrev);</script><script type=text/javascript>function Logout(){return confirm(js_logout="Are you sure to Logout?")?(top.location.href="/Logout.htm",!0):!1}function resize_menu(){var t,e=document.documentElement.clientHeight,i=$id("div_bt1").offsetHeight+$id("div_bt1").offsetTop;return t=i>=e-150?i+55:e-90,$id("div_copyright").style.top=t+"px",$id("autoHeight_menu").style.height=e-10+"px",$id("shadow").style.height=e+"px",!0}incMeta(),incCss("menu.css"),incJs("str_menu.js"),incJs("menuList.js"),incJs("menu.js");</script>
   <body class=menumain onresize=resize_menu()>
      <div id=autoHeight_menu class=MENURESIZE>
         <div id=div_bt1>
            <br> <script type=text/javascript>menuIdInit(),menuItemInit(),initCssForMenu();var menu=new menu.dd("menu");menu.init("menu","menuhover");</script>
            <div id=logout>
               <ul>
                  <li><a class=menulink onclick="return Logout()">Logout</a></li>
                  <div class=borderLine></div>
               </ul>
            </div>
         </div>
         <div id=div_copyright style=position:absolute>
            <table cellspace=2 cellpadding=1 border=0>
               <tbody>
                  <tr>
                     <td align=center>
                        <a id=corporation style=text-decoration:none target=blank>
                           <span class=copyright>
                              Copyright <span class=copy>©</span> <script>docW(top.g_year);</script>
                           </span>
                           <br> <span class=copyright id=t_corporation>TP-Link Corporation Limited. All rights reserved.</span>
                        </a>
            </table>
         </div>
      </div>
      <script>var o=document.documentElement,l=o.offsetLeft,t=o.offsetTop,w=o.offsetWidth,h=o.offsetHeight,ele=document.createElement("div");ele.id="shadow";var css=ele.style;css.position="absolute",css.width=w+"px",css.height=h+"px",css.left=l+"px",css.top=t+"px",css.backgroundImage="url('about:blank')",css.filter="alpha(opacity: 50)",css.display="none",document.body.appendChild(ele),resize_menu(),$id("corporation").href=0==top.g_Lan?"http://www.tp-link.com.cn/pages/smb":"http://www.tp-link.com";</script>
Август
Вопрос задан20 июня 2024 г.

1 Ответ

2
Дорофей
Ответ получен4 сентября 2024 г.

Ваш ответ

Загрузить файл.