scrapy框架_Python:Scrapy框架
“?Scrapy是一個(gè)適用爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)的應(yīng)用程序框架,它可以應(yīng)用在廣泛領(lǐng)域:Scrapy 常應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。通常我們可以很簡(jiǎn)單的通過 Scrapy 框架實(shí)現(xiàn)一個(gè)爬蟲,抓取指定網(wǎng)站的內(nèi)容或圖片。盡管Scrapy原本是設(shè)計(jì)用來屏幕抓取(更精確的說,是網(wǎng)絡(luò)抓取),但它也可以用來訪問API來提取數(shù)據(jù)。”
Scrapy的安裝 && 部署
爬蟲案例庫
Body
—
安裝
1、windows?安裝
? ? 安裝 Twisted 模塊
????下載地址:
?https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
根據(jù)python版本下載對(duì)應(yīng)版
筆者為python3.6
下載完成后,放置一個(gè)爬蟲的工作目錄(筆者任意新建的)
然后在對(duì)應(yīng)的 cmd?打開,(什么是cmd筆者不多說)
推薦建立一個(gè)虛擬環(huán)境(非必須,但推薦)
算了,后面的上視頻
pip install ./T......(Tab鍵)pip install scrapypip install pywin32windows部署就是這么簡(jiǎn)單
2、Ubuntu 安裝
? ??前提是已經(jīng)安裝好python3 與 pip
??? 1、安裝依賴(來自:官方文檔)
~$sudo apt-get install python3 python3-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev????2、安裝?Scrapy?
~$sudo?pip3?install?scrapy3、CentOS 安裝
????前提是已經(jīng)安裝好python3?與 pip
~$sudo pip3 install scrapy部署
創(chuàng)建Scrapy項(xiàng)目
scrapy startproject Democd Demoscrapy?genspider?cb 'cloudbyte.club'項(xiàng)目目錄結(jié)構(gòu)如圖:
cb.py? 編寫代碼邏輯
items.py??預(yù)設(shè)數(shù)據(jù)變量(可不使用)
middlewares.py? 爬蟲中間件(一般用不著)
pipelines.py?數(shù)據(jù)處理的地方
settins.py 全局配置
**?此下為筆者記錄(筆者自己需要)
settings.py
pipelines.py
import pymysql, timefrom pymongo import MongoClientclass DemoPipeline: def open_spider(self, spider): '''在爬蟲開啟的時(shí)候執(zhí)行一次,僅執(zhí)行一次''' self.start = time.time() # 連接數(shù)據(jù)庫(地址,用戶名,密碼,名字) self.db = pymysql.connect("localhost", "root", "root", "book", charset="utf8") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象 self.cur = self.db.cursor() # 連接 MongoDB self.client = MongoClient(host="127.0.0.1", port=27017) self.collection = self.client[''][''] print('MySQL 連接成功!') print('MongonDB 連接成功!') self.i = 0 def close_spider(self, spider): '''在爬蟲結(jié)束時(shí)執(zhí)行一次''' # 關(guān)閉游標(biāo) self.cur.close() # 關(guān)閉數(shù)據(jù)庫 self.db.close() print('\n' + '爬取完成!' + '耗時(shí):', time.time() - self.start) def process_item(self, item, spider): self.i += 1 data_list = [(), ] data_dict = {} try: self.cur.executemany( "INSERT INTO () VALUES ()", data_list) self.db.commit() except Exception as e: self.db.rollback() print("MySQL 數(shù)據(jù)保存失敗!") print(data_list) print(e) try: self.collection.insert(data_dict) except Exception as e: print("MongoDB數(shù)據(jù)保存失敗!") print(data_dict) print(e) return item案例庫
https://github.com/huangsv/pythonSpider
總結(jié)
以上是生活随笔為你收集整理的scrapy框架_Python:Scrapy框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux远程登录 密钥,使用密钥认证机
- 下一篇: python傅里叶逆变换_OpenCV-