我想抓取一个关于一些问题和答案的 3 深度网站。它有一个简单的结构,如下所示:
第二深度 -> 包含元数据(问题描述)
第三深度 -> 包含实际数据(问题和答案)
/prob +-> /prob/problemLists.html +-> /prob/problem123456.html
response.meta['depth']
我使用as 条件编写了如下 Scrapy 代码。
有没有更好的方法来做到这一点?
class DmzSpider(CrawlSpider):
rules = (
Rule(SgmlLinkExtractor(deny=('index\.htm',callback='parse_list'))),
)
def parse_list(self, response):
if response.meta['depth'] == 2:
# Scrape descriptions ...
return items
elif response.meta['depth'] ==3:
parse_item(response)
def parse_item(self, response):
# Parse items and save it according to prob_id...
return items
我还尝试了以下 3 个选项,但没有一个有效,并且 request_depth_max=1 总结为:
- 添加:从 scrapy.conf 导入设置 settings.overrides['DEPTH_LIMIT'] = 2 到蜘蛛文件
- 使用 -s 选项运行命令行: /usr/bin/scrapy crawl -s DEPTH_LIMIT=2 mininova.org
- 添加到 settings.py 和 scrapy.cfg:DEPTH_LIMIT=2
应该如何配置为1以上?