Scrapy - 从嵌套链接[/a]等中清理文本[/p]

Scrapy - Cleaning up text[/p] from nested links[/a] etc

我是 python 的新手,也是 scrape 的新手。尽管如此,我还是花了几天时间尝试从其存档中抓取新闻文章——成功了。

问题是,当我抓取文章 <p> 的内容时,该内容充满了额外的标签,例如 - stronga 等。因此 scrapy 不会提取它出来,我留下了包含 2/3 文本的新闻文章。将在下面尝试 HTML:

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

现在我试着四处搜索并查看这里的论坛。有一些建议,但根据我的尝试,它没有用或破坏了我的蜘蛛:

我已经阅读了关于规范化-space 和删除标签的内容,但它没有用。感谢您提前提供任何见解。

你可以使用 string.replace(,)

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

您可以将其集成到一个循环中,循环遍历包含您要丢弃的所有子字符串的列表。

请提供您的select或以获得更详细的帮助。

根据您的描述,我猜您正在 selecting p/text() (xml) 或 p::text (css) ,它不会获取 <p> 元素的子元素中的文本。

您应该尝试 selecting response.xpath('//p/descendant-or-self::*/text()') 来获取 <p> 中的文本及其所有子项。

您也可以只 select <p>,而不是它的文本,您也会得到它的子项。从那里您可以开始清理标签。有 answered questions 关于如何做到这一点。