Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 其可以應用在數據挖掘,信息處理或存儲歷史數據等一系列的程序中。其最初是為了頁面抓取所設計的, 也可以應用在獲取API所返回的數據或者通用的網絡爬蟲。
Scrapy原理圖如下:
1、創建Scrapy項目:進入你需要創建scrapy項目的文件夾下,輸入scrapy startproject BLZX(此處BLZX為爬蟲項目名稱)
項目創建完成后出現一個scrapy框架自動給你生成的爬蟲目錄
2、進入創建好的項目當中創建spider爬蟲文件blzxSpider:
cd BLZX
scrapy genspider blzxSpider image.so.com (其中image.so.com為爬取數據的鏈接)
到此我們的scrapy爬蟲項目已經創建完成,目錄如下:
創建好了blzxSpider爬蟲文件后scrapy將會在改文件當中自動生成 如下代碼,我們就可以在這個文件當中進行編寫代碼爬取數據了。
# -*- coding: utf-8 -*- import scrapy class BlzxspiderSpider(scrapy.Spider): name = 'blzxSpider' allowed_domains = ['image.so.com'] start_urls = ['http://image.so.com/'] def parse(self, response): pass
3、爬取360圖片玩轉的圖片,此時我們需要編寫blzxSpiser文件進行爬取360圖片
代碼如下
import scrapy import json class BoleSpider(scrapy.Spider): name = 'boleSpider' def start_requests(self): url = "https://image.so.com/zj?ch=photography&sn={}&listtype=new&temp=1" page = self.settings.get("MAX_PAGE") for i in range(int(page)+1): yield scrapy.Request(url=url.format(i*30)) def parse(self,response): photo_list = json.loads(response.text) for image in photo_list.get("list"): id = image["id"] url = image["qhimg_url"] title = image["group_title"] thumb = image["qhimg_thumb_url"] print(id,url,title,thumb)
抓取的結果為
最后,我們已經將360圖片的信息已經抓取下來了並打印在的控制台當中。但是我們需要把數據給下載下來,並且進行存儲,所以在下一節當中會對item.py文件進行講解。