我是第一次尝试scrapy crawspider子类。我基于https://doc.scrapy.org/en/latest/topics/spiders.html#crawlspider-example上的docs示例创建了以下spider:
class Test_Spider(CrawlSpider):
name = "test"
allowed_domains = ['http://www.dragonflieswellness.com']
start_urls = ['http://www.dragonflieswellness.com/wp-content/uploads/2015/09/']
rules = (
# Extract links matching 'category.php' (but not matching 'subsection.php')
# and follow links from them (since no callback means follow=True by default).
# Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),
# Extract links matching 'item.php' and parse them with the spider's method parse_item
Rule(LinkExtractor(allow='.jpg'), callback='parse_item'),
)
def parse_item(self, response):
self.logger.info('Hi, this is an item page! %s', response.url)
print(response.url)
我试图让spider从precibed目录开始循环,然后提取目录中的所有“.jpg”链接,但是我看到了:
^{pr2}$我怎样才能让它工作?在
首先,使用规则的目的不仅是提取链接,而且最重要的是遵循它们。如果您只想提取链接(例如,保存它们以备以后使用),则不必指定爬行器规则。另一方面,如果您想下载图像,请使用pipeline。在
也就是说,蜘蛛不跟踪链接的原因隐藏在LinkExtractor的实现中:
编辑:
为了在本例中使用ImagesPipeline下载图像:
将此添加到设置:
^{pr2}$创建新项目:
修改你的蜘蛛(添加一个解析方法):
xpath搜索以“.jpg”结尾的所有href,extract()方法创建一个列表。在
加载器是一个附加的特性,可以简化对象的创建,但是没有它也可以。在
请注意,我不是专家,可能有更好、更优雅的解决方案。不过,这个很好用。在
相关问题 更多 >
编程相关推荐