python爬蟲之pyspider web爬蟲框架簡單使用

pyspider簡介

官方文檔:http://docs.pyspider.org/

中文網(wǎng)址:http://www.pyspider.cn/book/pyspider/

最新版本: https://github.com/binux/pyspider/releases

PySpider:一個國人編寫的強大的網(wǎng)絡爬蟲系統(tǒng)并帶有強大的WebUI。采用Python語言編寫罢洲,分布式架構百宇,支持多種數(shù)據(jù)庫后端眷射,強大的WebUI支持腳本編輯器绽榛,任務監(jiān)視器谈况,項目管理器以及結果查看器厂置。在線示例: http://demo.pyspider.org/

pyspider是作者之前做的一個爬蟲架構的開源化實現(xiàn)泰涂。主要的功能需求是:

  • 抓取、更新調(diào)度多站點的特定的頁面
  • 需要對頁面進行結構化信息提取
  • 靈活可擴展,穩(wěn)定可監(jiān)控 而這也是絕大多數(shù)python爬蟲的需求 —— 定向抓取铲觉,結構化化解析澈蝙。但是面對結構迥異的各種網(wǎng)站,單一的抓取模式并不一定能滿足撵幽,靈活的抓取控制是必須的灯荧。為了達到這個目的,單純的配置文件往往不夠靈活盐杂,于是逗载,通過腳本去控制抓取是我最后的選擇。 而去重調(diào)度链烈,隊列厉斟,抓取,異常處理强衡,監(jiān)控等功能作為框架擦秽,提供給抓取腳本沃暗,并保證靈活性谓松。最后加上web的編輯調(diào)試環(huán)境,以及web任務監(jiān)控冻辩,即成為了這套框架越败。

pyspider的設計基礎是:以python腳本驅(qū)動的抓取環(huán)模型爬蟲

  • 通過python腳本進行結構化信息的提取触幼,follow鏈接調(diào)度抓取控制,實現(xiàn)最大的靈活性
  • 通過web化的腳本編寫究飞、調(diào)試環(huán)境置谦。web展現(xiàn)調(diào)度狀態(tài)
  • 抓取環(huán)模型成熟穩(wěn)定,模塊間相互獨立噪猾,通過消息隊列連接霉祸,從單進程到多機分布式靈活拓展

安裝:

添加依賴

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

sudo apt-get install phantomjs

pip3 install pyspider

啟動:

pyspider all

開啟編寫一個pyspider項目

from pyspider.libs.base_handler import *
import pymongo,pymysql

class Handler(BaseHandler):
    """
    Handler 就是 pyspider 爬蟲的主類,我
    們可以在此處定義爬取袱蜡、解析丝蹭、存儲的邏輯。
    整個爬蟲的功能只需要一個 Handler 即可完成
    """

    #crawl_config 屬性坪蚁。我們可以將本項目的
    #所有爬取配置統(tǒng)一定義到這里奔穿,如定義 
    #Headers、設置代理等敏晤,配置之后全局生效
    crawl_config = {
    }

    #mongodb數(shù)據(jù)庫連接
    mongocli = pymongo.MongoClient(host='localhost', port=27017)
    db = mongocli['jobbole']
    jobbolearticle = db['jobbolearticle']

    #mysql數(shù)據(jù)庫連接
    client = pymysql.Connect(
        'localhost','root','ljh1314',
        'class1804',charset='utf8'
    )
    cursor = client.cursor()

    #on_start() 方法是爬取入口贱田,初始的爬取
    #請求會在這里產(chǎn)生
    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://blog.jobbole.com/all-posts/', callback=self.index_page)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        print(response)
        for each in response.doc('a[class="page-numbers"]').items():
            self.crawl(each.attr.href, callback=self.detail_page)

    @config(priority=2)
    def detail_page(self, response):

        self.index_page(response)

        list = response.doc('#archive .post.floated-thumb')
       # print(list)
        for item in list.items():
            print('拿到了數(shù)據(jù)')
            print(type(item))
            title = item('a.archive-title').text()
            url = item('a.archive-title').attr.href
            print(title,url)
            return {
                'title':title,
                'url':url,
            }

    #方法中return的結果會執(zhí)行on_result
    def on_result(self,result):
        #可以在這里做數(shù)據(jù)的持久化
        print(result)

        #mysql數(shù)據(jù)庫存儲
        sql = """
        INSERT INTO jobbole()
        VALUE (%s,%s)
        """

        try:
            self.cursor.execute(sql,[result['title'],result['url']])
            self.client.commit()
        except Exception as err:
            print(err)
            self.client.rollback()

        #mongodb數(shù)據(jù)庫存儲
        self.jobbolearticle.insert(result)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嘴脾,隨后出現(xiàn)的幾起案子男摧,更是在濱河造成了極大的恐慌蔬墩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耗拓,死亡現(xiàn)場離奇詭異拇颅,居然都是意外死亡,警方通過查閱死者的電腦和手機乔询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門樟插,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竿刁,你說我怎么就攤上這事黄锤。” “怎么了食拜?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵鸵熟,是天一觀的道長。 經(jīng)常有香客問我负甸,道長旅赢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任惑惶,我火速辦了婚禮,結果婚禮上短纵,老公的妹妹穿的比我還像新娘带污。我一直安慰自己,他們只是感情好香到,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布鱼冀。 她就那樣靜靜地躺著,像睡著了一般悠就。 火紅的嫁衣襯著肌膚如雪千绪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天梗脾,我揣著相機與錄音荸型,去河邊找鬼。 笑死炸茧,一個胖子當著我的面吹牛瑞妇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梭冠,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辕狰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了控漠?” 一聲冷哼從身側響起蔓倍,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后偶翅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體默勾,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年倒堕,在試婚紗的時候發(fā)現(xiàn)自己被綠了灾测。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡垦巴,死狀恐怖媳搪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骤宣,我是刑警寧澤秦爆,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站憔披,受9級特大地震影響等限,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芬膝,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一望门、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锰霜,春花似錦筹误、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至友存,卻和暖如春祷膳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屡立。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工直晨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侠驯。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓抡秆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吟策。 傳聞我的和親對象是個殘疾皇子儒士,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、為什么要使用pyspider檩坚? 我們很好奇着撩,我們明明有了Scrapy框架诅福,為什么還要使用pyspider框架呢...
    田小田txt閱讀 1,127評論 0 0
  • 官方文檔:http://docs.pyspider.org/ PySpider:一個國人編寫的強大的網(wǎng)絡爬蟲系統(tǒng)并...
    牛耀閱讀 1,567評論 0 0
  • 因為工作原因,最近一段時間都在做項目的數(shù)據(jù)建設工作拖叙,涉及到使用Pyspider進行數(shù)據(jù)的爬取及入庫氓润,所以此處系統(tǒng)的...
    Lc_fly閱讀 2,744評論 0 2
  • 午餐后把合肥來參展的朋友,本次活動大家都很用心薯鳍,小韓尤為突出咖气,兢兢業(yè)業(yè),一人頂三人業(yè)績挖滤,象打了雞血一樣崩溪,從不馬虎,...
    真心愛禮閱讀 218評論 3 3
  • (最近靈感小爆棚斩松,打算創(chuàng)作浮世繪系列伶唯,記錄一些狗血而現(xiàn)實的故事,取材于朋友或者朋友的朋友惧盹,取名《S小姐的朋友圈》乳幸,...
    阿子衿閱讀 544評論 0 0