通過以上的分享,我們瞭解了scrapy框架的流程圖以及基本的安裝,那麼接下來,我們新建一個工程來走入scrapy spider的世界
scrapy spide新建工程
首先打開我們的pycharm IDE軟件,在新建工程前,請確保已經安裝好scrapy框架,你可以輸入下面代碼確保scrapy的正常安裝:
cmd終端下輸入 >>> scrapy -h
創建項目:cmd 進入項目文件夾,輸入如下代碼
scrapy startproject myproject #myproject是項目名字,你可以自己更改
Scrapy默認是不能在IDE中運行的,我們需要在根目錄中新建一個py文件:entrypoint.py,輸入如下代碼:
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'powers']) #第三個參數是你自己設置的爬蟲的名字
通過以上的設置,我們新建了一個scrapy框架的工程,整個文件目錄如下:
OK,整個工程的準備工作已經完畢,我們需要按照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
>>>
下期預告:
OK,到此我們的第一個簡單爬蟲就介紹完了,下期我們在本次的基礎上面,爬取更多的數據
閱讀更多 powers415 的文章