pyspider 快速開始

2023-02-16 16:06 更新

安裝

pip install pyspider命令行運(yùn)行 pyspider瀏覽器運(yùn)行腳本編輯界面WebUI http://localhost:5000/

如果你使用的是ubuntu系統(tǒng),嘗試:

apt-get install python python-dev python-distribute python-pip \
libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml \
libssl-dev zlib1g-dev

先去安裝二進(jìn)制的包

如果需要請(qǐng)安裝PhantomJS http://phantomjs.org/build.html

應(yīng)該注意PhantomJS只有把啟動(dòng)路徑添加到系統(tǒng)環(huán)境中才能使用。

注意:pyspider命令是默認(rèn)啟動(dòng)所all模型,該模型是使用線程和子進(jìn)程的。有關(guān)生產(chǎn)環(huán)境的,請(qǐng)轉(zhuǎn)到鏈接Deployment閱讀

警告:腳本編輯界面WebUI,是對(duì)外開放的。這會(huì)對(duì)你的電腦造成不必要的風(fēng)險(xiǎn),請(qǐng)?jiān)趦?nèi)網(wǎng)下使用它。

編寫第一個(gè)腳本

    from pyspider.libs.base_handler import *
    class Handler(BaseHandler):
        crawl_config = {
        }
    
        @every(minutes=24 * 60)
        def on_start(self):
            self.crawl('http://scrapy.org/', callback=self.index_page)
    
        @config(age=10 * 24 * 60 * 60)
        def index_page(self, response):
            for each in response.doc('a[href^="http"]').items():
                self.crawl(each.attr.href, callback=self.detail_page)
    
        @config(priority=2)
        def detail_page(self, response):
            return {
                "url": response.url,
                "title": response.doc('title').text(),
            }
  • def on_start(self) 是腳本的入口。當(dāng)你點(diǎn)擊表盤上的run按鈕的時(shí)候,將會(huì)運(yùn)行它。
  • self.crawl(url, callback=self.index_page)* 這是一個(gè)最重要的API方法。它將會(huì)添加新的任務(wù)到采集隊(duì)列。通過self.crawl的參數(shù),指定更多的選項(xiàng)。
  • def index_page(self, response)會(huì)獲得一個(gè)所有 Response* 對(duì)象. response.doc*是一個(gè)pyquery對(duì)象(有jQuery-like API去選擇提取元素的信息)。
  • def detail_page(self, response)返回一個(gè)字段對(duì)象作為結(jié)果。這個(gè)結(jié)果默認(rèn)會(huì)被resultdb捕捉。你也可以重寫on_result(self, result)方法,去管理采集的結(jié)果。

更多的內(nèi)容你需要知道的

  • @every(minutes=24*60, seconds=0)*是一個(gè)助手去告訴調(diào)度器on_start方法每天都要運(yùn)行。
  • @config(age=10 * 24 * 60 * 60)*指定了self.crawl默認(rèn)的age參數(shù)。頁面類型是index_page(當(dāng)callback=self.index_page的時(shí)候) age參數(shù)可以通過self.crawl(url, age=10*24*60*60)(優(yōu)先級(jí)高一定)或者crawl_config(優(yōu)先級(jí)底一點(diǎn))指定。
  • age=10 * 24 * 60 * 60*這個(gè)參數(shù)是告訴調(diào)度器拋棄這個(gè)請(qǐng)求,如果這個(gè)請(qǐng)求在十天之內(nèi)爬過。pyspider默認(rèn)是不會(huì)采集相同的url,即使你修改代碼。剛開始第一次運(yùn)行爬蟲同時(shí)維護(hù)代碼是比較常見的。第二次運(yùn)行也不會(huì)重新爬取。(閱讀itag去解決問題)
  • @config(priority=2)*標(biāo)記了detail pages應(yīng)該先采集。

你可以調(diào)試你的腳本一步一步的點(diǎn)擊run按鈕。轉(zhuǎn)到follows儀表盤,點(diǎn)擊play按鈕,去繼續(xù)。

開始運(yùn)行

  1. 保存你的爬蟲
  2. 返回腳本編輯界面首頁,找到你的項(xiàng)目
  3. 改變下狀態(tài)到DEBUG或者RUNNING
  4. 點(diǎn)擊run按鈕

主頁圖片


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)