Scrapy - Очистка текста [/ p] от вложенных ссылок [/ a] и т. Д. - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в питоне, а также скреб.Тем не менее, я провожу несколько дней, пытаясь почистить новостные статьи из своего архива - УСПЕШНО.

ПРОБЛЕМА заключается в том, что, когда я чищу СОДЕРЖАНИЕ статьи <p>, этот контент заполняется дополнительными тегами, такими как - strong, a и т. Д. И, таким образом, скрап не вытянет его, и яосталось с новостной статьей, содержащей 2/3 текста.Попробую HTML ниже:

<p> According to <a> Japan's newspapers </a> it happened ... </p>

Теперь я попробовал поискать и поискать форум здесь.Было несколько предложений, но из того, что я попробовал, он не работал или сломал моего паука:

enter image description here

Я прочитал о нормализованном пространстве и удалил тегино это не сработало.Спасибо за любые идеи заранее.

Ответы [ 2 ]

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

Пожалуйста, предоставьте ваш селектор для более подробной помощи.

Учитывая то, что вы описываете, я думаю, вы выбираете p/text() (xml) или p::text (css), что несобираемся получить текст в дочерних элементах <p> элементов.

Вы должны попробовать выбрать response.xpath('//p/descendant-or-self::*/text()'), чтобы получить текст в <p> и всех его дочерних элементах.

Вы также можетепросто выберите <p>, а не его текст, и вы также получите его потомков.Оттуда вы можете начать очистку тегов.Есть ответы на вопросы относительно того, как это сделать.

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

Вы можете использовать string.replace (,)

new_string = old_string.replace("<a>", "")

Вы можете интегрировать это в цикл, который перебирает список, который содержит все подстроки, которые вы хотите удалить.

...