linux下scrapy環境搭建

最近使用scrapy作數據挖掘,使用scrapy定時抓取數據並存入MongoDB,本文記錄環境搭建過程以做備忘css

OS:ubuntu 14.04  python:2.7.6 scrapy:1.0.5 DB:MongoDB 3html

  ubuntu14.04內置python2.7,所以python及pip安裝再也不贅述。python

  一.安裝scrapylinux

      pip install Scrapy  因爲scrapy相關依賴較多,所以在安裝過程當中可能遇到以下問題:mongodb

     1.ImportError: No module named w3lib.httpshell

      解決:pip install w3lib數據庫

  2.ImportError: No module named twistedubuntu

    解決:pip install twisted
  3.ImportError: No module named lxml.html
    解決:pip install lxml
  4.error: libxml/xmlversion.h: No such file or directory
    解決:apt-get install libxml2-dev libxslt-dev  
       apt-get install python-lxml
  5.ImportError: No module named cssselect
    解決:pip install cssselect
  6.ImportError: No module named OpenSSL
    解決:pip install pyOpenSSL 
  以上基本涵蓋安裝過程當中可能出現的依賴問題,若有遺漏待發現後補充
  
  使用scrapy --version 如顯示出版本信息則安裝成功
瀏覽器

 

  二:MongoDB安裝及權限設置python2.7

    1.MongoDB安裝

    要將爬蟲爬取的對象存入MongoDB首先安裝MongoDB,,能夠直接使用apt-get安裝,詳情見http://docs.mongoing.com/manual-zh/tutorial/install-mongodb-on-ubuntu.html,也能夠從MongoDB官網下載安裝包。我使用的方式是從官網直接下載最新安裝包。

  下載完後解壓,是一個.gz文件,直接用tar命令解壓便可,注意不要使用gunzip命令。接着將解壓以後的包移到制定目錄下(例如放到/usr/local/mongodb文件夾下),配置環境變量export PATH=<mongodb-install-directory>/bin:$PATH

    注意:MongoDB的數據存儲在/data/db目錄下,這個目錄須要手動建立(EX. /usr/local/mongodb/data/db)

        接着進入bin目錄下執行./mongod,便可啓動MongoDB了,在瀏覽器中輸入localhost:27017或localhost:28017,若是有內容則說明啓動成功。接着執行./mongo命令,就進入了mongo shell控制檯,而後就能夠操做mongo了。

    2.權限管理

    mongo默認沒有設置權限,因此只要能夠接入的用戶均可以訪問而且執行任何操做,所以要設置權限。一個須要注意的地方是mongo3和mongo2的權限設置很有不一樣,相互之間不能照搬。這裏僅說明mongo3的設置方法。

    1)首先使用不驗證方式(不要加 --auth)啓動mongo: ./mongod

            2)進入mongo shell 控制檯,先執行show dbs,能夠發現只有一個local數據庫,這時要建立一個admin數據庫:

       use admin

       db.createUser(

          {user: "root",

            pwd: "1234",

                        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

          })

      注意:roles中的db是必須設置的

    3)執行show users,若是看到有了剛纔新建的用戶則說明建立用戶成功

    4)關閉mongo:use admin  db.shutdownserver()

           5)使用驗證模式啓動mongo: ./mongod --auth

           6)再次進入mongo shell 控制檯,切換到admin數據庫,此時須要受權才能執行其它操做:db.auth("root","1234")完成受權,若顯示1則受權成功,因爲此用戶root只有管理用戶的權限,所以若是用該用戶執行查詢操做(如show collections)會顯示拒絕執行

    7)接着建立一個新用戶,建立用戶只能在其相應的數據庫中創建。例如要創建一個在數據庫pms中擁有讀寫權限的用戶:

       use pms

       db.createUser( 

          {   user: "zhangsan",   

            pwd: "1234",  

            roles: [ { role: "readWrite", db: "pms" } ]

           })

       而後能夠切換到admin數據庫查看全部用戶,能夠發現已經有新建的這個用戶了  

    8)而後切回pms數據庫驗證一下,use pms ,而後受權db.auth("zhangsan","1234"),執行show collectionsm,能夠發現pms庫中的全部collections就展現出來了

 

    以上就是mongo的用戶權限管理。詳情參考官方文檔http://docs.mongoing.com/manual-zh/core/authentication-mechanisms.html

    3.設置守護進程

     經過./mongod開啓了mongo後會發現一旦關閉窗口mongo的進程就被殺死了,因此要設置mongo爲守護進程

     只要執行sudo ./mongod --fork --logpath ./mongodb.log 便可,注意:一旦設置了--fork 則必須同時設置日誌路徑(--logpath)

 

  三:寫爬蟲
    接下來根據自身要求寫爬蟲。詳情參考官方文檔便可http://doc.scrapy.org/en/0.14/intro/tutorial.html,在此再也不贅述。
    至於爬蟲與MongoDB對接只需更改pipline.py便可。詳情參考官方文檔http://doc.scrapy.org/en/1.0/topics/item-pipeline.html
    須要注意的是pymongo的版本問題,不知是否因爲MongoDB2與MongoDB3差異不小因此對應的pymongo版本也不盡相同,所以注意安裝的pymongo版本儘可能與數據庫版本相匹配。
    因爲我寫的爬蟲都是單一爬蟲,每一個爬蟲固定爬取一個站點,所以寫了一個shell腳本一次執行全部爬蟲,同時也方便以後執行的定時任務,注意腳本要放在用scrapy startproject創建的項目的首層文件夾下(若是已經經過腳本設置了路徑就不須要了)
    
  四:設置定時任務
    以後將爬蟲設置爲定時任務,定於天天早上8:00定時抓取。

    使用linux的crontab功能作定時任務,執行crontab -e進入編輯模式,在最下方加上0 8 * * * 你要執行的命令 便可(表示天天8點定時執行你設定的命令)

    若是要將執行結果寫入某文件能夠如此編輯: 

    0 8 * * * 你要執行的命令>你想把執行結果寫入的文件 2>&1 (EX. 0 8 * * * /home/ubuntu/test>/home/ubuntu/log.txt 2>&1 表示天天早上8點執行home/ubuntu/test腳本並將執行結果寫入/home/ubuntu/log.txt文件)

    注意:使用定時執行的腳本中若是使用到非系統自己的命令建議使用絕對路徑以免出錯以及其它沒必要要的麻煩。

 

  以上就是scrapy環境搭建,對接mongo並設置定時任務的步驟。

 

相關參考:

MongoDB官方手冊:http://docs.mongoing.com/manual-zh/contents.html

scrapy官方文檔:http://doc.scrapy.org/en/1.0/index.html

相關文章
相關標籤/搜索