#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()")