使用scrapy批量下载图片
最近浏览图片网站,看到好的图集缺没有下载链接,只能一张一张存。所以就打算试试用scrapy来写爬虫。
我用下面这个网站来测试爬虫。
创建爬虫项目
安装scrapy就不说了,直接从创建scrapy项目开始,先在控制台中
scrapy startproject guaihaha
cd guaihaha
scrapy genspider -t basic ghh1 guaihaha.xyz
这样项目就创建好了,并且创建了一个叫ghh1的爬虫
创建爬取类
在item.py里写我们要爬取的对象包含的参数,我这里就只需要图片url和图集名
class GuaihahaItem(scrapy.Item):
image_urls = scrapy.Field()
name = scrapy.Field()
pass
获取图片url
首先接收要下载图片的url参数
def __init__(self, url=None, *args, **kwargs):
self.start_urls=[url]
这样就可以通过scrapy crawl ghh1 -a url=xxxx 开始抓取xxx页面上的内容了
因为这个网站是一页一张图片,而且第一页就包含该图集每一页的链接。所以我们先要需要获取每一页的url。
通过浏览器找到每一页的链接,我通过xpath来选择这些链接,所以直接复制了xpath。因为里面不包含首页,所以还要单独yield response.url来下首页的图片
def parse(self, response):
yield Request(response.url,callback=self.parse_one)
urldata = response.xpath('//*[@id="leftChild"]/div[1]/div[2]/div[2]/p//a/@href').extract()
for u