scrapy框架搭建與第一個實例


scrapy是python的一個網絡爬蟲框架,關於它的介紹有很多資料,這里不做過多介紹(好吧我承認我還不是很懂...)。我現在還在摸索階段,因為用scrapy爬取的第一個網站非常簡單,不涉及登陸、驗證、翻頁、封號等等問題,僅僅是用spiders中抓取頁面內容,然后在pipelines中存入數據庫,所以現階段了解的東西還不多,在此僅將自己這段時間的學習成果進行總結分享。

一、scrapy框架安裝

(一)需要安裝東西

1、python安裝:我用的版本是2,7,8

2、pywin32安裝——我不明白在Scrapy中它是干嘛使的/(ㄒoㄒ)/~~

3、twisted安裝

  Twisted是用Python實現的基於事件驅動的網絡引擎框架,Scrapy使用了Twisted異步網絡庫來處理網絡通訊。

(1)安裝zope.interface

(2)安裝pyopenssl

(3)安裝twisted

4、安裝lxml

5、安裝scrapy

(二)windows系統下的安裝

1、其他包安裝

  在windows系統下,除了scrapy本身,其余的包都可以找到exe文件,運行傻瓜安裝即可,有一點需要注意,如果電腦本身安裝了多個版本的python,在安裝的時候選擇指定python的路徑。

2、scrapy安裝

 (1)下載源碼——進入源碼——python setup.py install

   (2)安裝pip(python的一個包安裝工具)—— pip install Scrapy

3、附我的安裝包網盤下載地址:http://pan.baidu.com/s/1dExYh2p

(三)linux系統下的安裝——Centos

1、安裝方法和命令

1)系統軟件安裝

(1)yum——Centos下的軟件包管理器——yum install python2.7

  安裝系統需要的軟件包時,需要用到這個命令,但是有一點,yum會自動安裝最新版。

(2)wget——獲取軟件包,之后可以進行解壓,然后手動安裝(此種方式也可以用於python庫的安裝)

        wget -c http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2

2)python庫安裝

(1)下載安裝腳本.py文件(wget方法)——python **.py

(2)下載源碼,進入根目錄——python setup.py install

(3)easy_install——easy_install Scrapy  

(4)pip——用於安裝python的相關包——pip install Scrapy

2、安裝步驟

1)python安裝——python2.7.6

(1)獲取安裝包:wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
(2)解壓:xz Python-2.7.6.tar.xz
     tar xvf Python-2.7.6.tar

(3)進入源碼:cd Python-2.7.6

(4)安裝:

   配置:./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

   安裝:  make && make altinstall

(5)建立軟連接,將系統默認的python指向python2.7:

  刪除原來的軟連接:rm -rf /usr/bin/python

  建立新的軟連接:ln -s /usr/local/bin/python2.7 /usr/bin/python

  現在在命令行輸入python,就是默認的2.7版本了

2)esay_install——方便之后的python庫安裝

(1)方法1:yum install setuptool

    我最初用的是這種方法,但是正如前面所述,此種方法默認安裝的最新版本(3.*),它將庫安裝在了python3中。

(2)方法2:wget

  wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py

  python ez_setup.py --insecure(因為此時python的默認的是2.7,所以會安裝在2.7下)

  之后可以按照python的方式建立easy_install的軟連接,因為此時系統中可能裝有不同版本的setuptools,指定自己需要的版本。

(3)pip安裝——可以利用easy_install 安裝一下pip——easy_install pip

  注意:pip/easy_install——對應python2

     pip3/easy_install3——對應python3

3)安裝twisted

(1)安裝zope.interface——easy_install zope.interface

(2)安裝gcc:yum install gcc -y

(3)安裝twisted:easy_install twisted

4)安裝pyOpenSSL

(1)依賴:yum install libffi libffi-devel openssl-devel -y

(2)easy_install pyOpenSSL

5)安裝Scrapy

(1)依賴:yum install libxml2 libxslt libxslt-devel -y

(2)easy_install scrapy

問題:在最后一步easy_install scrapy時,報了一個錯誤

Setup script exited with error: command 'gcc' failed with exit status 1????

我懷疑是python-devel的版本問題,可是找了n多資料,也還沒有解決/(ㄒoㄒ)/~~

二、Scrapy應用(windows下)

一)新建一個Scrapy項目

  進入指定目錄,按住Shift鍵,點擊鼠標右鍵,選擇在此處打開命令行:

  輸入命令:scrapy startproject scrapyLearning--------新建一個項目

  tree -/f scrapyLearing 可以查看一下目錄結構

  

(1)spdiders文件夾下的py文件:爬取數據——爬到網頁;獲取數據

(2)items.py:類似於MVC或者Django框架中的model

(3)pipelines.py:存儲數據,spider.py執行完會自動調用pipilines.py,將爬取到的數據存儲下來

(4)settings.py:一些配置信息,目前我只是加過pipeline,其他還沒有操縱過

二)案例-爬取一個網站的數據,存入到MySql中,代碼的部分截圖如下(部分名字馬賽克了一下...):

1、整個代碼結構

2、item——定義了多了Item,每一個對應一個數據庫表

3、spider

  運行命令:scrapy genspider spaiderName “***.com”--------- 新建一個爬蟲(后兩個參數是爬蟲的名字和域名)

(1)把定義的那些item都引入進來

(2)start_urls——要爬取的url,因為此網站要爬取的各個url是連續的,所以就用一個循環即可,程序會依次處理每一個url

(3)xpath方法提取頁面中的元素

(4)return info,把提取到的數據返回——之后會調用pipeline對數據進行存儲

4、pipelines

(1)因為有不同的類型的item,所以首先判斷是哪個類型,然后再分別調用不同的處理方法

(2)之后對數據庫進行操作

 5、settings

  指定一下需要用到的pipeline——ITEM_PIPELINES = ['crawler.pipelines.CrawlerPipeline']

  以上,就是一個完整的運用scrapy框架進行網絡爬取的過程,非常簡單,難點在於分析頁面結構和對於異常情況的處理。當然,本例子爬取的網站比較簡單,像Rules等都還沒有用到,日后用到會進一步總結更新。

6、運行爬蟲

  通過命令: scrapy crawl spiderName


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM