首页 > 解决方案 > 通过 html 标签的值进行抓取链接提取器

问题描述

我正在使用scrapy通过从其主页抓取网站来抓取隐私政策,因此我想智能地抓取包含特定关键字(隐私、数据、保护等)的页面中的特定链接。

我看到scrapy的 CrawlSpider 和LinkExtractor对象允许这样做,但是我希望LinkExtractor不仅将正则表达式应用于发现的链接,还应用于<a></a>标签中的文本

例如,为了更好地识别以下情况:

<a href="http://example.com/legal">Check out our privacy policy</a>

其中,URL 可能不是完美匹配,但 HTML 标记中的文本更有帮助。

我看到 scrapy 的 LinkExtractor 对象已经有一个名为的参数process_value,它可以对 HTML 标记中的文本启动操作,但我不确定如何“返回正链接匹配”(就像allow参数中给出的正则表达式一样)因此“将此链接添加到要由 CrawlSpider 对象解析的事物列表中”

标签: recursionscrapytags

解决方案


您将能够在 Scrapy 1.7.0或更高版本中执行此操作。见#3635

这些更改将restrict_text参数添加到LinkExtractor. 来自LinkExtractor 上 Scrapy 文档的主分支

restrict_text正则表达式(或列表))——链接文本必须匹配才能被提取的单个正则表达式(或正则表达式列表)。如果未给出(或为空),它将匹配所有链接。如果给出了正则表达式列表,则如果至少匹配一个,则将提取该链接。


推荐阅读