这里我继续之前的例子,下载知名生物信息博主hoptop 博客里面的图片。这里假设已经知道了如何提取主页中每篇文章的链接,然后迭代爬取每篇文章的内容,这个时候,如何获取每篇博客中的图片信息呢?
其实使用scrapy很容易,里面内置了图片下载的功能,也就是所谓的ImagesPipelines
接下来直接实战
1 首先先是创建一直spider
2 在 setting 中启用Imagespiplines
3 设置下载图片所在的目录路径
4 解析页面
这里使用右击检查,可以看到图片的src 这是图片的连接,待会儿要放入一个列表让爬虫去下载
5 编写爬虫,这里直接上代码:
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
class DImageSpider(scrapy.Spider):
name = 'D_image'
allowed_domains = ['www.jianshu.com/p/300e7732d952']
start_urls = ['http://www.jianshu.com/p/300e7732d952/']
def parse(self, response):
item = {}
item['image_urls']=[]
for url in response.xpath('//img/@data-original-src').extract():
download_url = "http:" + url
item['image_urls'].append(download_url)
yield item
主要是建立一个item 的字典,然后建立一个imge_urls的列表,竟然解析response,把连接提取出来,放入列表中就可以了。最后封装一下就可以。
然后我们试一下:
scrapy crawl D_image
OK
点开看看
这样,简书的图片也可以下载啦,整个过程还是比较容易的,配合之前文字爬取,原理上可以下载全文了,但然还要针对排版设计一下提取规则。