利用scrapy 来爬取数据会更加的快捷方便,使用很少的代码量就可以完成想要的操作,今天就分享一下运用scrapy下载图片的使用方法
首先我们先要准备一个我们需要爬取图片的网站,然后根据前几篇微博的介绍创建好文件夹,如下
然后我们打开image.py文件 ,进入编写页面
然后改正自己需要爬取的网页的正确的链接地址,然后获取响应
然后运用爬虫知识获取到自己需要的内容,我们这次的目的是为了下载图片,所以要有一个前提,,我们需要进入到下面这个文件里
然后找到以下内容进行更改
然后根据爬虫知识获取自己想要获取的东西
import scrapy
from ..items import ImagenetItem
class ImageSpider(scrapy.Spider):
name = 'image'
allowed_domains = ['pic.netbian.com']
# 请求最开始的url
start_urls = ['http://pic.netbian.com/4kmeishi/']
# netbian.com
def parse(self, response):
# 根据响应,来找到指定的内容,现在找的是img的src属性
img_list = response.xpath('//ul[@class="clearfix"]/li/a/img/@src')
print(img_list)
# 找到了很多src属性值,现在开始遍历 分别使用每一个
for img in img_list:
# 使用在items.py创建的数据模型item
item = ImagenetItem()
# 拼接url得到完整的下载地址
src = 'http://pic.netbian.com'+ img.extract()
print(src)
# 将得到的下载地址,放入到数据模型中
# ValueError: Missingscheme in request url: h
# 下载地址要包在列表当中
# item['src'] = src
item['src'] = [src]
# 将数据模型传输给管道
yield item
next_url = response.xpath('//div[@class="page"]/a[text()="下一页"]/@href').extract()
if len(next_url) !=0 :
url = 'http://pic.netbian.com'+next_url[0]
# 将url传给scrapy.Request 得到的结果继续用self.parse处理
yield scrapy.Request(url=url,callback=self.parse)
值得注意的是以下几点的书写需要在 items.py文件中进行一些操作
找到items.py文件进入然后进行编辑
import scrapy
class ImagenetItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
src = scrapy.Field()
pass
做完这些工作在终端运行代码就可以成功下载图片了