前面已經(jīng)介紹過(guò)如何創(chuàng)建scrapy的項(xiàng)目,和對(duì)項(xiàng)目中的文件功能的基本介紹。
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供夏河企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為夏河眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。這次,就來(lái)談?wù)勈褂玫幕玖鞒蹋?/p>
(1)首先第一點(diǎn),打開(kāi)終端,找到自己想要把scrapy工程創(chuàng)建的路徑。這里,我是建立在桌面上的。打開(kāi)終端,輸入:
cd Desktop
就進(jìn)入了桌面文件存儲(chǔ)位置。
(2)創(chuàng)建scrapy工程。終端輸入:scrapy startproject image
終端輸入:cd image
繼續(xù)輸入:scrapy genspider imageSpider pic.netbian.com
(3)在pycharm中打開(kāi)剛才桌面的文件,進(jìn)入settings.py
設(shè)置爬蟲(chóng)規(guī)則??梢詫⒁?guī)則直接注釋掉,或者改為False
。
(4) 回到爬蟲(chóng)文件。
更改start_url
,將爬蟲(chóng)默認(rèn)的第一個(gè)網(wǎng)址更改為需要爬取的網(wǎng)站網(wǎng)址即可。
(5)下面就可以爬取數(shù)據(jù)了,這里選擇了下載圖片。
爬取完數(shù)據(jù)之后,要在存儲(chǔ)數(shù)據(jù)的items.py
文件中傳輸給管道
接下來(lái)在爬蟲(chóng)文件中引入管道模型。
from ..items import ImageItem
在爬蟲(chóng)文件中的parse函數(shù)中使用在items.py文件中創(chuàng)建的數(shù)據(jù)模型。
item = ImageItem()
注意點(diǎn):
有時(shí)候在終端輸出的時(shí)候,如果返回內(nèi)容是scrapy.selector
,如果對(duì)象類(lèi)型是scrapy.selector
,那么這個(gè)對(duì)象可以被繼續(xù)迭代,也可以用xpath繼續(xù)尋找里面的內(nèi)容。
如果終端遇到這個(gè)問(wèn)題:
# ValueError:Missing scheme in request url:h
那么就需要使用extract()
將xpath對(duì)象轉(zhuǎn)化成列表對(duì)象。而列表對(duì)象,可以繼續(xù)被迭代,但是不可以使用xpath
來(lái)尋找里面的對(duì)象。
在下載之前還需要在settings.py文件中,對(duì)圖片下載的路徑和存儲(chǔ)位置進(jìn)行設(shè)置。
下面附代碼如下。僅有爬蟲(chóng)文件的代碼:
# -*- 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屬性值,現(xiàn)在進(jìn)行遍歷,分別使用每一個(gè) for img in img_list: # 使用在items.py中創(chuàng)建的數(shù)據(jù)模型item item = ImageItem() print('--------------------') img = img.extract() # 拼接圖片的url,得到完整的下載地址 src = 'http://pic.netbian.com' +img # 將得到的數(shù)據(jù)放入到模型中 # 因?yàn)槭窍螺d地址,所以要用列表包起來(lái),否則會(huì)報(bào)錯(cuò)。 item['src'] = [src] yield item next_url = response.xpath('//div[@class="page"]/a[text()="下一頁(yè)"]/@href').extract() print('*****************************************************************') if len(next_url)!=0: url = 'http://pic.netbian.com'+next_url[0] # 將url傳給scrapy.Request 得到的結(jié)果繼續(xù)用self.parse進(jìn)行處理 yield scrapy.Request(url=url,callback=self.parse)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。