Как получить текст внутри тега метки через lxml? - PullRequest
0 голосов
/ 11 октября 2018

Я использую lxml для извлечения текста внутри тегов, и таким образом

  xpaths_for_questions_lxml = []
    for tag in self.tree.iter():
        try:
            if tag.text and utils.is_question(tag.text.strip()):
                xpaths_for_questions_lxml.append(self.tree.getpath(tag))

        except Exception as e:
            self.logger.debug(traceback.format_exc())
            raise Exception

is_question возвращает значение true, если у оператора есть вопросительный знак

Нокогда тип тега равен label атрибут tag.text пуст, он не показывает никакого текста, даже если внутри фактической метки webpage есть текст внутри тега label.

Почему тег label не отображает текстовое содержимое?или что-то еще, что нужно было сделать для извлечения тегов меток?

РЕДАКТИРОВАТЬ1: Мой вопрос заключается в том, что я перебираю все дочерние элементы дерева dom, но почему текст внутри метки не отображается?

1 Ответ

0 голосов
/ 11 октября 2018

Если вы хотите получить вопросы, вы можете попробовать

r = requests.get('https://www.amctheatres.com/faqs/movie-info')
source = html.fromstring(r.text)
questions = source.xpath('//label[@itemprop="text"]/text()')

или

questions = [label.text_content() for label in source.xpath('//label[@itemprop="text"]')]

Обратите внимание, что label.text_content() следует использовать вместо label.text, поскольку узлы label содержатболее одного дочернего текстового узла

print(questions)
#['Does the runtime shown for each movie include trailers?', 'Where can I find MPAA movie ratings information?', 'What does advertised showtime mean?', 'What movies are playing right now at AMC?', 'What movies are coming soon to AMC?', 'How can I find movie times at AMC?']
...