Только первая часть абзаца возвращается, пока не встретится дочерний тег? - PullRequest
1 голос
/ 25 июня 2019

Это с помощью Scrapy.

Я сталкиваюсь со следующим типом разметки:

<p>Noting the presence of a footnote<sup>1</sup> is one common way for superscripts to be used.</p>

Тестовая страница:
https://html.com/tags/sup/

Тестовый запрос:

response.css('div.render p::text')[0].extract()

Test ItemLoader:

loader.add_css("text", "div.render p::text")

Результаты испытаний:

отмечая наличие сноски

Ожидается тест:

Отмечать наличие сноски - один из распространенных способов использования надстрочных знаков.

Вопрос:

Как получить полный текст абзаца, игнорируя дочерний тег?

1 Ответ

1 голос
/ 26 июня 2019

Я не знаю, есть ли в scrapy соответствующий селектор, игнорирующий вложенный <sub>.Я предлагаю вам использовать модуль re, чтобы игнорировать ребенка.Кстати, это не решение в долгосрочной перспективе.Вы не должны анализировать HTML с помощью регулярных выражений.Для получения дополнительной информации, пожалуйста, взгляните на эту тему RegEx соответствует открытым тегам, кроме автономных тегов XHTML

Попробуйте это:

import re
def parse(self,response):
    extracted_p_tag=response.css('div.render p').get()
    ignored_sup=re.sub('<sup>(.*)</sup>','',extracted_p_tag)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...