5.Scrapy框架

1、Scrapy


是一個(gè)爬蟲框架,提取結(jié)構(gòu)性的數(shù)據(jù)。其可以應(yīng)用在數(shù)據(jù)挖掘,信息處理等方面。提供了許多的爬蟲的基類,幫我們更簡便使用爬蟲?;赥wisted


2、scrapy安裝


【注意】路徑名不能有中文,不能用管理員進(jìn)入cmd,電腦系統(tǒng)用戶路徑不能是中文


3、框架簡介


該框架是一個(gè)第三方的框架,許多功能已經(jīng)被封裝好(比如:下載功能)
由五部分構(gòu)成:
引擎、下載器、爬蟲、調(diào)度器、管道(item和pipeline)
以上五部分我們只需要關(guān)系其中的兩部分:爬蟲和管道

  • spiders:蜘蛛或爬蟲,我們分析網(wǎng)頁的地方,我們主要的代碼寫在這里
  • 管道:包括item和pipeline,用于處理數(shù)據(jù)
    其他部分:了解
    • 引擎:用來處理整個(gè)系統(tǒng)的數(shù)據(jù)流,觸發(fā)各種事務(wù)(框架的核心)
    • 下載器:用于下載網(wǎng)頁內(nèi)容,并且返回給蜘蛛(下載器基于Twisted的高效異步模型)
    • 調(diào)度器:用來接收引擎發(fā)過來的請求,壓入隊(duì)列中等處理任務(wù)

4.簡單用法


(1)創(chuàng)建項(xiàng)目
    指令:scrapy startproject 項(xiàng)目名
(2)項(xiàng)目目錄結(jié)構(gòu)
    firstSpider
        firstSpider
            spiders           爬蟲目錄(寫代碼位置)
                __init__.py
                myspider.py       爬蟲文件,以后的爬蟲代碼寫在這里
            __init__.py
            items.py              定義數(shù)據(jù)結(jié)構(gòu)地方
            middlewares.py    中間件(了解)
            pipelines.py      管道文件
            settings.py       項(xiàng)目配置文件
        scrapy.cfg

    項(xiàng)目創(chuàng)建處理,里面是沒有爬蟲的,我們需要通過指令來創(chuàng)建一個(gè)爬蟲:
    cd firstSpider/firstSpider
    scrapy genspider qiubai “www.qiushibaike.com"
    以上指令完事后,就會(huì)在firstSpider/firstSpider/spiders里面自動(dòng)創(chuàng)建一個(gè)qiubai.py
    name: 爬蟲的名字,啟動(dòng)的時(shí)候根據(jù)爬蟲的名字啟動(dòng)項(xiàng)目
    allowed_domains:允許的域名,就是爬取的時(shí)候這個(gè)請求要不要發(fā)送,如果是該允許域名之下的url,就會(huì)發(fā)送,
        如果不是,則過濾掉這個(gè)請求,這是一個(gè)列表,可以寫多個(gè)允許的域名
    start_urls:爬蟲起始url,是一個(gè)列表,里面可以寫多個(gè),一般只寫一個(gè)
    def parse(self, response): 這個(gè)函數(shù)非常重要,就是你以后寫代碼的地方,parse函數(shù)名是固定的,當(dāng)收到下載
        數(shù)據(jù)的時(shí)候會(huì)自動(dòng)的調(diào)用這個(gè)方法,該方法第二個(gè)參數(shù)為response,這是一個(gè)響應(yīng)對象,從該對象中獲取html
        字符串,然后解析之?!咀ⅰ窟@個(gè)parse函數(shù)必須返回一個(gè)可迭代對象
(3)定制item.py,其實(shí)就是您的數(shù)據(jù)結(jié)構(gòu),格式非常簡單,復(fù)制粘貼即可
(4)撰寫蜘蛛
    打印response對象,簡單跑一把
    指令:cd firstSpider/firstSpider/spiders
        scrapy crawl qiubai
    【注意】抓取的時(shí)候會(huì)出錯(cuò)
    pip install pypiwin32
    根據(jù)response獲取網(wǎng)頁內(nèi)容
        response.text    字符串類型
        response.body    二進(jìn)制類型
(5)運(yùn)行
        scrapy crawl qiubai -o qiubai.json
        scrapy crawl qiubai -o qiubai.xml
        scrapy crawl qiubai -o qiubai.csv
  • 用Scrapy寫爬蟲的步驟:

1)創(chuàng)建項(xiàng)目 scrapy startproject 項(xiàng)目名
2)創(chuàng)建爬蟲 scrapy genspider 爬蟲名 域名
運(yùn)行爬蟲 scrapy crawl 爬蟲名 [-o xx.json/xml/csv]
3)根據(jù)需求編寫item
4)在spiders里面解析數(shù)據(jù)
5)在管道中處理解析完的數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容