大數據開發神器——scrapy spider框架(代碼入門篇)

通過以上的分享,我們瞭解了scrapy框架的流程圖以及基本的安裝,那麼接下來,我們新建一個工程來走入scrapy spider的世界

scrapy spide新建工程

首先打開我們的pycharm IDE軟件,在新建工程前,請確保已經安裝好scrapy框架,你可以輸入下面代碼確保scrapy的正常安裝:

cmd終端下輸入 >>> scrapy -h
大數據開發神器——scrapy spider框架(代碼入門篇)

scrapy框架確認

創建項目:cmd 進入項目文件夾,輸入如下代碼

scrapy startproject myproject #myproject是項目名字,你可以自己更改

Scrapy默認是不能在IDE中運行的,我們需要在根目錄中新建一個py文件:entrypoint.py,輸入如下代碼:

from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'powers']) #第三個參數是你自己設置的爬蟲的名字
大數據開發神器——scrapy spider框架(代碼入門篇)

entrypoint.py啟動爬蟲

通過以上的設置,我們新建了一個scrapy框架的工程,整個文件目錄如下:

大數據開發神器——scrapy spider框架(代碼入門篇)

scrapy項目目錄

OK,整個工程的準備工作已經完畢,我們需要按照scrapy的流程圖,構建我們的爬蟲

大數據開發神器——scrapy spider框架(代碼入門篇)

scrapy流程圖

scrapy新建spider

首先,在spider爬蟲文件夾下,新建一個py文件powers415.py

第二: 設置spider

打開settings,找到如下代碼,在我們前期調試階段,可以先取消註釋

HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

這幾行註釋的作用是Scrapy會緩存你有的Requests!當你再次請求時,如果存在緩存文檔則返回緩存文檔,而不是去網站請求,這樣既加快了本地調試速度,也減輕了 網站的壓力

第三:定義Items

根據我們需要爬取的需要,定義我們需要的Items,我們以爬取https://www.23us.so/full.html此URL為例(一個小說網站),打開此網站,我們可以看到上面有小說的名字,作者,字數,狀態等,本次就先爬蟲這一個界面的所有小說的名字為例

打開Items 輸入如下:

import scrapy
class PowersItem(scrapy.Item):

novelname = scrapy.Field()#小說名字
pass

以上就是scrapy的基本設置(後續會添加其他的設置,我們後續討論)

第四:編寫spider

打開我們先前建立的py爬蟲powers415.py

import scrapy
from bs4 import BeautifulSoup #(解析request來的網頁)
from scrapy.http import Request #(request請求)
from myproject.items import PowersItem
#以上是插入scrapy以及其他使用到的第三方庫
###########
class PowersSpider(scrapy.Spider):
name = "powers" #爬蟲的名字,必須添加爬蟲的名字,這個很重要
first_url='http://www.23us.so/full.html' #定義第一個URL
def start_requests(self):
yield Request(self.first_url,self.parse)#返回調度器處理好的request
#spider處理獲取的數據,得到Items
def parse(self, response): #必須有parse函數
tds = BeautifulSoup(response.text, 'lxml').find_all('tr', bgcolor='#FFFFFF')#解析
item = PowersItem() #item初始化
for td in tds:
novelname = td.find('a').get_text()#獲取小說名字
item['novelname'] =novelname #獲取到Items
print(item)
pass
>>>
大數據開發神器——scrapy spider框架(代碼入門篇)

爬取的數據

下期預告:

OK,到此我們的第一個簡單爬蟲就介紹完了,下期我們在本次的基礎上面,爬取更多的數據

大數據開發神器——scrapy spider框架(代碼入門篇)

Scrapy spider


分享到:


相關文章: