问题:我的代码中缺少了什么(请参阅下面的“当前代码”部分),这将使我能够使用Scrapy从绝对路径和相对路径下载文件?我很感激你的帮助。我对所有这些组件如何协同工作以及如何获得所需的行为感到迷茫。在
背景:我使用了一种组合方式:仔细阅读垃圾文档,在GitHub上找到可比较的示例,以及拖网式的StackOverflow来寻找答案,但我无法让垃圾文件管道按照我希望的方式工作。我看到的是相当基本的目标网站,它们有大量的文件,主要是pdf和jpg,它们在^{或img src选择器下链接为绝对或相对路径。我想下载所有这些文件。我的理解是响应。跟随将遵循相对路径和绝对路径,但我不确定该函数是否总能生成一个可以通过文件管道下载的路径。我找到了爬行的绝对路径和相对路径,这要感谢my earlier question提供的答案。在
遇到的问题:主要有两个问题。首先,我似乎无法让蜘蛛同时遵循绝对路径和相对路径。其次,我似乎无法让文件管道真正下载文件。这很可能是因为我不了解这四个.py文件是如何协同工作的。如果有人能提供一些基本的观察和指导,我相信我可以越过这个基本的“去/不去”点,开始在一些更复杂的功能中分层。在
当前代码:以下是来自神秘感.py, 项目.py, 管道.py,和设置.py. 在
神秘感.py:请注意,parse_items函数尚未完成,但我不知道该函数应该包括什么。在from scrapy import Spider
from ..items import MyspiderItem
# Using response.follow for different xpaths
class MySpider(Spider):
name='myspider'
allowed_domains=['example.com']
start_urls=['http://www.example.com/']
# Standard link extractor
def parse_all(self, response):
# follow selector
for href in response.xpath('//a/@href'):
yield response.follow(href, self.parse_items)
# follow selector
for img in response.xpath('//img/@src'):
yield response.follow(img, self.parse_items)
# This is where I get lost
def parse_items(self, response):
# trying to define item for items pipeline
MyspiderItem.item['file_urls']=[]
项目.py
^{pr2}$
设置.py:下面是启用文件管道的相关部分。在# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline': 1}
FILES_STORE = '/home/me/Scraping/myspider/Downloads'
管道.py:class MyspiderPipeline(object):
def process_item(self, item, spider):
return item