如果您有一个sitemap.xml,其中包含:
abc.com/sitemap-1.xml
abc.com/sitemap-2.xml
abc.com/image-sitemap.xml
如何编写sitemap_follow以只读取sitemap-xxx站点Map而不读取image-sitemap.xml?我尝试使用
^sitemap
没有运气。我该怎么办?否定“形象”?怎么做?
编辑:Scrapy代码:
self._follow = [regex(x) for x in self.sitemap_follow]
和
if any(x.search(loc) for x in self._follow):
正则表达式应用于整个url。我看到一个解决方案而不修改Scrapy的唯一方法是有一个只用于www.example.com的Scraperabc.com并将其添加到正则表达式中,或者只是将/添加到正则表达式中
2条答案
按热度按时间toiithl61#
为了简单直接地回答你的问题,我提供了这段代码。换句话说,我可以使用正则表达式
^.$
来匹配站点Map索引文件中的每一项。这意味着您将以下面的方式设置
sitemap_follow
,因为the spiders documentation表示此变量期望接收列表。但是,同一页的文档说,“默认情况下,所有的网站Map都是遵循的。”因此,这似乎是完全没有必要的。
"我想知道你想做什么"
编辑:作为对评论的回应。你可以使用所谓的“消极的lookbehindAssert”,在这种情况下是
(?<!image-)
。我对此的保留意见是,你需要能够在URL的开头扫描像www.example.com这样的内容abc.com,这可能会带来相当有趣的挑战。ulydmbyx2#
跳过url的一个方法是在类上覆盖sitemap_filter():