我无法让Scrapy的文件下载管道正常工作。日志中没有错误。我错过了什么?
**我知道fspider.py
运行蜘蛛并不完整 - 我现在只使用parse_list
调试器测试scrapy parse
fspider.py:
import scrapy
from scrapy.spiders import CrawlSpider
class FSpider(CrawlSpider):
name = 'fsp'
allowed_domains = 'hdr.undp.org'
start_urls = ['http://hdr.undp.org/en/2016-report/download']
def parse_list(self, response):
links = [response.urljoin(link) for link in response.css('li ::attr(href)').extract()]
for link in links:
if 'overview' in link.lower():
yield {'file_urls': link}
在settings.py
我添加了:
ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline': 1}
FILES_STORE = 'files'
当我运行parse
调试器时,我得到:
>>> STATUS DEPTH LEVEL 1 <<<
# Scraped Items ------------------------------------------------------------
[{'file_urls': 'http://hdr.undp.org/sites/default/files/HDR2016_EN_Overview_Web.pdf'},
{'file_urls': 'http://hdr.undp.org/sites/default/files/HDR2016_FR_Overview_Web.pdf'},
{'file_urls': 'http://hdr.undp.org/sites/default/files/HDR2016_SP_Overview_Web.pdf'},
{'file_urls': 'http://hdr.undp.org/sites/default/files/HDR2016_AR_Overview_Web.pdf'},
{'file_urls': 'http://hdr.undp.org/sites/default/files/HDR2016_RU_Overview_Web.pdf'},
{'file_urls': 'http://hdr.undp.org/sites/default/files/hdr2016_cn_overview_web.pdf'}]
# Requests -----------------------------------------------------------------
[]
...但没有下载任何内容。
任何提示?
答案 0 :(得分:0)
想出来:在parse
函数中,链接必须作为列表传递:
yield {'file_urls': [link]}