scrapy 使用的基本流程和例子

回憶不說話發表於2018-08-02

前面已經介紹過如何建立scrapy的專案,和對專案中的檔案功能的基本介紹。

這次,就來談談使用的基本流程。

(1)首先第一點,開啟終端,找到自己想要把scrapy工程建立的路徑。這裡,我是建立在桌面上的。開啟終端,輸入:
cd Desktop 就進入了桌面檔案儲存位置。

(2)建立scrapy工程。終端輸入:scrapy startproject image

終端輸入:cd image

繼續輸入:scrapy genspider imageSpider pic.netbian.com

(3)在pycharm中開啟剛才桌面的檔案,進入settings.py設定爬蟲規則。可以將規則直接註釋掉,或者改為False。

(4) 回到爬蟲檔案。

更改start_url,將爬蟲預設的第一個網址更改為需要爬取的網站網址即可。

(5)下面就可以爬取資料了,這裡選擇了下載圖片。

爬取完資料之後,要在儲存資料的items.py檔案中傳輸給管道

接下來在爬蟲檔案中引入管道模型。

from ..items import ImageItem

在爬蟲檔案中的parse函式中使用在items.py檔案中建立的資料模型。

item = ImageItem()

注意點:

有時候在終端輸出的時候,如果返回內容是scrapy.selector ,如果物件型別是scrapy.selector,那麼這個物件可以被繼續迭代,也可以用xpath繼續尋找裡面的內容。

如果終端遇到這個問題:

# ValueError:Missing scheme in request url:h

那麼就需要使用extract()將xpath物件轉化成列表物件。而列表物件,可以繼續被迭代,但是不可以使用xpath來尋找裡面的物件。

在下載之前還需要在settings.py檔案中,對圖片下載的路徑和儲存位置進行設定。

下面附程式碼如下。僅有爬蟲檔案的程式碼:

# -*- coding: utf-8 -*-
import scrapy

from ..items import ImageItem
class ImagespiderSpider(scrapy.Spider):
    name = 'imageSpider'
    allowed_domains = ['pic.netbian.com']
    start_urls = ['http://pic.netbian.com/4kmeinv/']

    def parse(self, response):
        img_list = response.xpath('//ul[@class="clearfix"]/li/a/img/@src')
        # 找到了很多src屬性值,現在進行遍歷,分別使用每一個
        for img in img_list:
            # 使用在items.py中建立的資料模型item
            item = ImageItem()
            print('--------------------')
            img = img.extract()
            # 拼接圖片的url,得到完整的下載地址
            src = 'http://pic.netbian.com' +img
            # 將得到的資料放入到模型中
            # 因為是下載地址,所以要用列表包起來,否則會報錯。
            item['src'] = [src]
            yield item
        next_url = response.xpath('//div[@class="page"]/a[text()="下一頁"]/@href').extract()
        print('*****************************************************************')
        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)

希望對大家有所幫助。


 

 

 

 

 

 

 

相關文章