該來的還是要來的,作為網路爬蟲,通用的requests庫、beautifulsoup庫還有常用的selenium庫是非常優秀的,他們可以幫助我們解決絕大部分問題的。對於我們個人使用而言,學會這些,基本是夠用了。但是哦,使用框架的爬蟲可以幫助我們更高效的解決問題,所以…我們今天來看下scrapy的基礎使用…
安裝scrapy庫
pip install scrapy -i
建立乙個專案(這裡建立乙個通用圖書爬蟲專案)
scrapy startproject book_spider
建立乙個爬蟲
scrapy genspider a69novel 69shu.com
此時我們就建立了乙個完整的專案了,在這之前,先給大家看一下這個專案的目錄樹
.
├── book_spider
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── a69novel.py
└── scrapy.cfg
item.py檔案
用來定義乙個容器,這裡我們定義四個字段
novel_name = scrapy.field()
novel_chapter =scrapy.field()
novel_content = scrapy.field()
_id = scrapy.field()
分別用來儲存**名、**章節、**章節內容、**章節id值
a69novel.py檔案
這是乙個爬蟲檔案,,由我們剛剛建立的爬蟲命令生成的模板檔案,這裡我們需要對他進行改寫。
到這裡其實我們已經實現了乙個簡單的爬蟲,但是我們的資料沒有儲存啊,來接下來,我們在settings.py
中開啟item_pipelines
,讓資料傳遞到pipelines
讓我們做下一步處理,當然,在這裡大家可以自己設定user_agent啥的。
item_pipelines =
在pipelines
中我們做如下操作即可from pymongo import mongoclient
import re
import json
cliect = mongoclient()
db = cliect['book_spider']
class bookspiderpipeline(object):
def process_item(self, item, spider):
if spider.name == 'a69novel':
collection = db['a69novel']
# 去除多餘字元和空字元
temp = [re.sub('\r|\n|(\xa0\xa0\xa0\xa0)', '', str(i)) for i in item['novel_content']]
t = [i for i in temp if i != '']
content = ''
for i in t[1:]:
content += i
id = re.findall('\d+', item['_id'][0])[0]
novel_chapter = re.sub('\d+\.', '', item['novel_chapter'][0])
item['_id'] = id
item['novel_content'] = content
item['novel_chapter'] = novel_chapter
collection.insert(dict(item))
print('ok')
return item
最後一步,執行爬蟲
scrapy crawl a69novel
python 網路爬蟲 之scrapy系列
網路爬蟲之scrapy系列 scrapy 網路爬蟲 之0 爬蟲與反扒 scrapy網路爬蟲 之一 scrapy框架簡介和基礎應用 scrapy網路爬蟲 之二 持久化操作 scrapy網路爬蟲 之三 遞迴解析和post請求 scrapy網路爬蟲 之四 日誌等級和請求傳參 scrapy網路爬蟲 之五 c...
網路爬蟲框架 Scrapy
網路爬蟲框架 scrapy 簡介 開源的python爬蟲框架,用於抓取web站點並從頁面中提取結構化的資料 用途廣泛,可用於資料探勘 監測和自動化測試 scrapy優點 快速強大 量簡潔便可完成爬取 易擴充套件 可新增新的功能模組 scrapy高階特性 內建資料抽取器css xpath re 互動式...
scrapy之爬蟲初體驗
本篇文章主要將怎樣建立乙個scrapy專案,以及完成第乙個scrapy爬蟲專案。首先是安裝scrapy模組,有很多原因都能導致scrapy模組安裝失敗,網上有很多教程讓怎樣安裝scrapy。親測比較有效的方法使用whl檔案安裝。不過有小夥伴也可以嘗試直接使用pip install scrapy命令進...