Неожиданные результаты htmlelement из lxml

#python #web-scraping #lxml

#python #очистка веб-страниц #lxml

Вопрос:

мой код:

 from lxml import html
import request

currentPage = requests.get('https://www.bbc.co.uk/programmes/m000lyx0')
currentTree = html.fromstring(currentPage.content)
currentTree = html.parse("./index.html")
beilagen = currentTree.xpath('//div[@class="segment__track"]')
for x in beilagen:
    artist = x.xpath('//span[@class="artist"]/text()')
f.close()
  

Я пытаюсь извлечь исполнителя и песню из html. переменная beilagen представляет собой список всех дорожек. В цикле for я пытаюсь получить каждый отдельный трек, но переменная artist содержит всех исполнителей, и я ожидаю, что она содержит только одного исполнителя. Почему я получаю all artist в качестве результата? Мне трудно увидеть подробное содержимое x переменной за пределами "<Element div at 0x10db2bad0>"

большое спасибо

html:https://www.bbc.co.uk/programmes/m000lyx0

Ответ №1:

Попробуйте изменить свой for цикл из

 artist = x.xpath('//span[@class="artist"]/text()')
  

Для

 artist = x.xpath('.//span[@class="artist"]/text()')
  

и посмотрите, работает ли это.

Комментарии:

1. @patrup Рад, что это сработало для вас! Если мы закончили, не забудьте принять ответ, пожалуйста.