
在上一篇文章《神器!五分鐘完成大型爬蟲項目!》,我們介紹了一個類似于 Scrapy 的開源爬蟲框架——feapder,并著重介紹了該框架的一種應用——AirSpider,它是一個輕量級的爬蟲 。
接下來我們再來介紹另一種爬蟲應用——Spider,它是是一款基于 redis 的分布式爬蟲,適用于海量數據采集,支持斷點續爬、爬蟲報警、數據自動入庫等功能 。
安裝和 AirSpider 一樣,我們也是通過命令行安裝 。
由于 Spider 是分布式爬蟲,可能涉及到多個爬蟲,所以最好以項目的方式來創建 。
創建項目我們首先來創建項目:
feapder create -p spider-project創建的項目目錄是這樣的:
創建好項目后,開發時我們需要將項目設置為工作區間,否則引入非同級目錄下的文件時,編譯器會報錯 。
設置工作區間方式(以pycharm為例):項目->右鍵->Mark Directory as -> Sources Root 。
創建爬蟲創建爬蟲的命令行語句為:
feapder create -s
- AirSpider 對應的 spider_type 值為 1
- Spider 對應的 spider_type 值為 2
- BatchSpider 對應的 spider_type 值為 3
所以創建 Spider 的語句為:
feapder create -s spider_test 2運行語句后,我們可以看到在 spiders 目錄下生成了 spider_test.py 文件 。
對應的文件內容為:
import feapderclass SpiderTest(feapder.Spider):# 自定義數據庫,若項目中有setting.py文件,此自定義可刪除__custom_setting__ = dict(REDISDB_IP_PORTS="localhost:6379", REDISDB_USER_PASS="", REDISDB_DB=0)def start_requests(self):yield feapder.Request("https://www.baidu.com")def parse(self, request, response):print(response)if __name__ == "__main__":SpiderTest(redis_key="xxx:xxx").start()因Spider是基于redis做的分布式,因此模板代碼默認給了redis的配置方式 。關于 Redis 的配置信息:- REDISDB_IP_PORTS:連接地址,若為集群或哨兵模式,多個連接地址用逗號分開,若為哨兵模式,需要加個REDISDB_SERVICE_NAME參數 。
- REDISDB_USER_PASS:連接密碼 。
- REDISDB_DB:數據庫 。
特性我們在 AirSpider 里面講的方法,在 Spider 這里都支持,下面我們來看看 Spider 相對于 AirSpider 的不同之處 。
數據自動入庫寫過爬蟲的人都知道,如果要將數據持久化到 MySQL 數據庫,如果碰到字段特別多的情況,就會很煩人,需要解析之后手寫好多字段,拼湊 SQL 語句 。
這個問題,Spider 幫我們想到了,我們可以利用框架幫我們自動入庫 。
建表第一步,我們需要在數據庫中創建一張數據表,這個大家都會,這里就不說了 。
配置 setting將 setting.py 里面的數據庫配置改為自己的配置:
# # MYSQLMYSQL_IP = ""MYSQL_PORT = MYSQL_DB = ""MYSQL_USER_NAME = ""MYSQL_USER_PASS = ""也就是這幾個配置 。生成實體類 Item接著,我們將命令行切換到我們項目的 items 目錄,運行命令:
feapder create -i我這里數據庫里使用的是 report 表,所以命令為:
feapder create -i report然后,我們就可以在 items 目錄下看到生成的 report_item.py 實體類了 。我這里生成的實體類內容是:
from feapder import Itemclass ReportItem(Item):"""This class was generated by feapder.command: feapder create -i report."""__table_name__ = "report"def __init__(self, *args, **kwargs):self.count = Noneself.emRatingName = None# 評級名稱self.emRatingValue = https://www.shwenmu.com/wenda/None# 評級代碼self.encodeUrl = None# 鏈接# self.id = Noneself.indvInduCode = None# 行業代碼self.indvInduName = None# 行業名稱self.lastEmRatingName = None# 上次評級名稱self.lastEmRatingValue = None# 上次評級代碼self.orgCode = None# 機構代碼self.orgName = None# 機構名稱self.orgSName = None# 機構簡稱self.predictNextTwoYearEps = Noneself.predictNextTwoYearPe = Noneself.predictNextYearEps = Noneself.predictNextYearPe = Noneself.predictThisYearEps = Noneself.predictThisYearPe = Noneself.publishDate = None# 發表時間self.ratingChange = None# 評級變動self.researcher = None# 研究員self.stockCode = None# 股票代碼self.stockName = None# 股票簡稱self.title = None# 報告名稱
推薦閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 小編分享WiFi萬能鑰匙使用教程。
- Python是什么意思 python是什么意思
- 二手車30到80萬蕪湖,問問大家二手車三十萬到五十萬能買什么車
- 安卓萬能解壓器的方法 rar密碼解鎖器手機
- 音樂播放器大全 pc端萬能播放器哪個好用
- 萬能梗怎么喂?萬能梗喂養要點
- 萬能梗毛發怎么修剪?萬能梗毛發修剪方法
- 萬能梗好養嗎?萬能梗飼養方法
- 萬能梗幼犬怎么護理?幼犬護理技巧
- python表白代碼大全 利用python代碼畫愛心
