爬蟲實戰篇---糗事百科爬蟲(scrapy框架)

前言:目標肯定

(1)、建立項目

scrapy startproject qsbkcss

(2)、技術路線

scrapy框架的使用html

(3)、建立爬蟲

scrapy genspider spider qiushibaike.com (爬蟲名不能與項目名重名)json

(3)、實戰瀏覽器

改寫settings.py框架

設置請求頭模擬瀏覽器訪問行爲scrapy

不聽從robots.txt行爲ide

限定下載速度函數

啓用pipelines,若有多個pipelines,數字小表示優先級越高url

改寫items.py3d

 改寫pipelines.py

改寫spider.py

(5)、效果展現

咱們本次一共抓取到了325條數據

(6)、總結(全爬蟲流程分析)

一、咱們在spider中傳入了初始url,並經過引擎傳遞給scheduler調度隊列生成request請求並經過downloader middleware 進入downloader從互聯網上下載數據,返回一個response對象,response是一個scrapy.http.response.html.HtmlResponse對象,能夠經過css和xpath語法來提取數據

二、提取出的數據是一個Selector or SelectorList對象,並經過downloader middle 經引擎傳遞給spider中的parse函數進行解析,咱們經過getall()獲取了字符串文本,列表類型,get()方法返回第一個值,str類型,這裏咱們亦可以使用extract()返回的是列表類型,extract_first()返回列表中的第一個值,str類型

三、解析後咱們使用yield將函數轉換爲一個生成器,不斷的從中抽數據,並傳遞給item pipeline進行處理

四、在item pipeline中咱們使用了三個核心方法和初始化函數,首先打來數據(這裏採用__init__,固然你能夠在open_spider()中執行,接着使用核心方法process——item進行數據處理,最後使用了close_spider()方法關閉了打開的數據)

五、在保存json數據的時候可使用JsonItemExporter和JsonLinesItemExporter這兩個類來進行

JsonItemExporter:每次將數據添加進內存最後寫入磁盤,好處:一個知足json格式的數據。壞處:數據量較大時:內存佔用較多(pipelines.py圖片2)

JsonLinesItemExporter:每次調用export_item的時候將數據存儲到內存,好處:每次直接將數據寫入硬盤,節省內存,適用於數據量較大的狀況。壞處:不是一個知足json格式的數據(pipelines.py圖片3)

六、最後運行爬蟲項目,獲得目標結果

相關文章
相關標籤/搜索