【发布时间】:2018-06-28 23:44:15
【问题描述】:
所以我传递了一个start_url,它是一页新闻文章(例如cnn.com)。但是,我只想提取新闻文章本身,我不想关注文章页面上的任何链接。为此,我使用具有以下规则的CrawlSpider:
rules = (
Rule(LinkExtractor(allow=('regexToMatchArticleUrls',),
deny=('someDenyUrls')), callback='parse_article_page'),
)
def parse_article_page(self,response):
#extracts the title, date, body, etc of article
我已启用scrapy.spidermiddlewares.depth.DepthMiddleware 并设置DEPTH_LIMIT = 1。
但是,我仍然会从恰好与 regexToMatchArticleUrls 匹配的各个文章页面抓取链接,因为它们是指向同一网站其他部分的链接(我无法使正则表达式更具限制性)。
但是,当DEPTH_LIMIT=1 出现时,为什么这些链接会被抓取?是不是因为DEPTH_LIMIT 重置了从LinkExtractor 提取的每个链接,即。文章页面网址?有没有办法让DEPTH_LIMIT 工作或扩展DepthMiddleware 以不抓取文章页面上的链接?谢谢!
【问题讨论】:
标签: python web-scraping scrapy scrapy-spider