невозможно извлечь текст из тега href с помощью xpath

#python #xpath #lxml

#python #xpath #lxml

Вопрос:

Я пытаюсь извлечь названия трендов с этой страницы, используя следующий xpath

 //div[@class ='table-responsive']/table[@class = 'table table-striped table-hover dataTable no-footer']/tbody/tr/th/a/text()
 

при попытке в веб-браузере выдает 50 результатов. Но со следующим кодом

 import requests
import lxml.html

html = requests.get('https://twitter-trends.iamrohit.in/')
doc = lxml.html.fromstring(html.content)
trends_name = doc.xpath("//div[@class = 'table-responsive']/table[@class = 'table table-striped table-hover dataTable no-footer']/tbody/tr/th/a/text()")
 

Я ничего не получаю в trends_name переменной. Я попытался распечатать html.content , и он выдает необработанный HTML-контент. Кроме того, я попробовал тот же xpath в онлайн-селекторе xapth, используя исходный код той же страницы, и он дает 50 трендов
Я не уверен, что я делаю не так с кодом, поскольку я пробовал это на других сайтах с разными xpath, и это работает, пожалуйста, помогите. Спасибо

Ответ №1:

Просто удалите "dataTable" и "no-footer" имена классов из предиката for table — эти имена классов добавляются при отображении таблицы в браузере, но отсутствуют в источнике страницы:

 trends_name = doc.xpath("//div[@class = 'table-responsive']/table[@class = 'table table-striped table-hover']/tbody/tr/th/a/text()")