У меня есть веб-страница, которую я загружаю с библиотекой Python: метод GET 'selenium-questions'.
response = self.driver.request('GET', url)
response.content
- это байтовое представление возвращенного HTML.
В браузере (Chrome) я использую плагин браузера под названием 'xpath-finder', чтобы найти xpath для поля данных (текст).
У меня также есть открыл страницу в Firefox и я получил тот же xpath. Я уверен, что xpath правильный.
Я получаю HTML, а затем мне нужно извлечь данные, используя xpath.
import lxml
def extract_data(self, html_bytes): # passing: response.content (bytes)
xpath_geocode = "/html/body/div[5]/table/tbody/tr/td/div[3]/div/table/tbody/tr[1]/td[4]"
tree = lxml.html.fromstring(html_bytes)
geocode_info = tree.xpath(xpath_geocode)
print('geocode_info:', geocode_info) # this prints: geocode_info: [] <== nada
# in fact nothing is there at all, this does not enter the for loop, and prints nothing
for e in tree.xpath(xpath_geocode):
print(e.text_content)
У меня правильный xpath, я не верьте, что два метода, создающие один и тот же xpath, неправильны (Chrome плагин для браузера и Firefox проверяют, щелкают правой кнопкой мыши, копируют xpath).
Что я здесь не так делаю?
Может ли это быть так:
tree = lxml.html.fromstring(html_bytes)
изменяет html, так что xpath больше не действителен? Если да, то как мне сделать так, чтобы HTML не менялся?
Или как я могу получить правильный xpath из дерева или найти его? (через распечатку et c).