Используя selenium для перехода на страницу, войдите в систему, запустите скрипт, который заполняет таблицу результатов поиска. Я использую это, чтобы получить код innerHTML. Сейчас я пытаюсь использовать xpath, чтобы получить фактические данные из таблицы, но я застрял.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from lxml import html
from lxml import etree
import requests
browser = webdriver.Chrome()
url = "www.url.com"
browser.get(url)
username = browser.find_element_by_id("username") #username form field
password = browser.find_element_by_id("password") #password form field
username.send_keys("myusername")
password.send_keys("mypassword")
password.send_keys(Keys.RETURN)
Далее я перехожу на интересующую меня страницу и получаю innerHTML
browser.get('a different url')
innerHTML= browser.execute_script('return document.body.innerHTML')
tree = html.fromstring(innerHTML)
Есть таблица, которая имеет
<tbody id='searchResultsPage'>
<tr>
<td>...</td>
<td>...</td>
</tr>
...
Итак, я пытаюсь перебрать каждую строку и каждый столбец, чтобы получить текст. Я могу построить цикл для циклического просмотра на основе номера строки и столбца. Итак, я попробовал:
thisItem = tree.xpath('//tbody[id="searchResultsPage"]/tr[position()=9]/td[position()=3]/text()')
print(thisRow)
Я ничего не получил.
Я также заметил, что один из столбцов представляет собой набор ссылок с классом «запись вида действия». Поэтому я попробовал следующее:
companies = tree.xpath('//a[@class="action-view-record"]/text()')
print(companies)
И это работает (хотя не решает мою первоначальную проблему, так как оставшиеся столбцы - просто теги). Но почему-то это работает только иногда. Примерно в 50% случаев код ничего не возвращает, в остальное время он возвращает правильные данные (список компаний).
Есть мысли о том, как ориентироваться в таблице? а почему иногда код ломается?