Scrapy - 从嵌套链接[/a]等中清理文本[/p]
Scrapy - Cleaning up text[/p] from nested links[/a] etc
我是 python 的新手,也是 scrape 的新手。尽管如此,我还是花了几天时间尝试从其存档中抓取新闻文章——成功了。
问题是,当我抓取文章 <p>
的内容时,该内容充满了额外的标签,例如 - strong
、a
等。因此 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 关于如何做到这一点。
我是 python 的新手,也是 scrape 的新手。尽管如此,我还是花了几天时间尝试从其存档中抓取新闻文章——成功了。
问题是,当我抓取文章 <p>
的内容时,该内容充满了额外的标签,例如 - strong
、a
等。因此 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 关于如何做到这一点。