Scrapy使用的基本流程與實例講解
前面已經(jīng)介紹過如何創(chuàng)建scrapy的項目,和對項目中的文件功能的基本介紹。
這次,就來談談使用的基本流程:
(1)首先第一點,打開終端,找到自己想要把scrapy工程創(chuàng)建的路徑。這里,我是建立在桌面上的。打開終端,輸入:
cd Desktop 就進入了桌面文件存儲位置。

(2)創(chuàng)建scrapy工程。終端輸入:scrapy startproject image

終端輸入:cd image
繼續(xù)輸入:scrapy genspider imageSpider pic.netbian.com

(3)在pycharm中打開剛才桌面的文件,進入settings.py設置爬蟲規(guī)則??梢詫⒁?guī)則直接注釋掉,或者改為False。

(4) 回到爬蟲文件。

更改start_url,將爬蟲默認的第一個網(wǎng)址更改為需要爬取的網(wǎng)站網(wǎng)址即可。
(5)下面就可以爬取數(shù)據(jù)了,這里選擇了下載圖片。
爬取完數(shù)據(jù)之后,要在存儲數(shù)據(jù)的items.py文件中傳輸給管道
接下來在爬蟲文件中引入管道模型。
from ..items import ImageItem
在爬蟲文件中的parse函數(shù)中使用在items.py文件中創(chuàng)建的數(shù)據(jù)模型。
item = ImageItem()
注意點:
有時候在終端輸出的時候,如果返回內(nèi)容是scrapy.selector ,如果對象類型是scrapy.selector,那么這個對象可以被繼續(xù)迭代,也可以用xpath繼續(xù)尋找里面的內(nèi)容。
如果終端遇到這個問題:
# ValueError:Missing scheme in request url:h
那么就需要使用extract()將xpath對象轉(zhuǎn)化成列表對象。而列表對象,可以繼續(xù)被迭代,但是不可以使用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屬性值,現(xiàn)在進行遍歷,分別使用每一個
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ù)放入到模型中
# 因為是下載地址,所以要用列表包起來,否則會報錯。
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 得到的結果繼續(xù)用self.parse進行處理
yield scrapy.Request(url=url,callback=self.parse)
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
python如何求2-1000內(nèi)的所有回文素數(shù)
這篇文章主要介紹了python如何求2-1000內(nèi)的所有回文素數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python中安全地使用多進程和多線程進行數(shù)據(jù)共享
在并發(fā)編程中,有時多個線程或進程需要訪問共享的數(shù)據(jù),因此我們需要一些機制來確保數(shù)據(jù)的安全訪問,本文將從多線程和多進程兩個角度探討Python如何安全地實現(xiàn)數(shù)據(jù)共享2024-12-12
淺談django 模型類使用save()方法的好處與注意事項
這篇文章主要介紹了淺談django 模型類使用save()方法的好處與注意事項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python中不同圖表的數(shù)據(jù)可視化的實現(xiàn)
數(shù)據(jù)可視化是以圖形格式呈現(xiàn)數(shù)據(jù)。它通過以簡單易懂的格式匯總和呈現(xiàn)大量數(shù)據(jù),幫助人們理解數(shù)據(jù)的重要性,并有助于清晰有效地傳達信息。本文為大家準備了Python實現(xiàn)不同圖表數(shù)據(jù)可視化的代碼,需要的可以參考一下2022-08-08
python在windows下創(chuàng)建隱藏窗口子進程的方法
這篇文章主要介紹了python在windows下創(chuàng)建隱藏窗口子進程的方法,涉及Python使用subprocess模塊操作進程的相關技巧,需要的朋友可以參考下2015-06-06

