系列文章列表:
scrapy爬蟲學習系列一:scrapy爬蟲環境的准備: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_007_scrapy01.html
scrapy爬蟲學習系列二:scrapy簡單爬蟲樣例學習: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_007_scrapy02.html
scrapy爬蟲學習系列三:scrapy部署到scrapyhub上: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_004_scrapyhub.html
scrapy爬蟲學習系列四:portia的學習入門: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_010_scrapy04.html
scrapy爬蟲學習系列五:圖片的抓取和下載: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_011_scrapy05.html
scrapy爬蟲學習系列六:官方文檔的學習: https://github.com/zhaojiedi1992/My_Study_Scrapy
1.scrapy簡介
Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。
官方簡介地址:https://docs.scrapy.org/en/latest/topics/architecture.html
中文的簡介地址:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/architecture.html 這個版本才舊了,不建議看了(英文的是1.4的, 這個是0.24)
1.1 scrapy基礎架構

1.2 各個組件簡介
Scrapy Engine
引擎負責控制數據流在系統中所有組件中流動,並在相應動作發生時觸發事件。 詳細內容查看下面的數據流(Data Flow)部分。
調度器(Scheduler)
調度器從引擎接受request並將他們入隊,以便之后引擎請求他們時提供給引擎。
下載器(Downloader)
下載器負責獲取頁面數據並提供給引擎,而后提供給spider。
Spiders
Spider是Scrapy用戶編寫用於分析response並提取item(即獲取到的item)或額外跟進的URL的類。 每個spider負責處理一個特定(或一些)網站。 更多內容請看 Spiders 。
Item Pipeline
Item Pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如存取到數據庫中)。 更多內容查看 Item Pipeline 。
下載器中間件(Downloader middlewares)
下載器中間件是在引擎及下載器之間的特定鈎子(specific hook),處理Downloader傳遞給引擎的response。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。更多內容請看 下載器中間件(Downloader Middleware) 。
1.3數據流(Data flow)
Scrapy中的數據流由執行引擎控制,其過程如下:
- 引擎打開一個網站(open a domain),找到處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。
- 引擎從Spider中獲取到第一個要爬取的URL並在調度器(Scheduler)以Request調度。
- 引擎向調度器請求下一個要爬取的URL。
- 調度器返回下一個要爬取的URL給引擎,引擎將URL通過下載中間件(請求(request)方向)轉發給下載器(Downloader)。
- 一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其通過下載中間件(返回(response)方向)發送給引擎。
- 引擎從下載器中接收到Response並通過Spider中間件(輸入方向)發送給Spider處理。
- Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。
- 引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調度器。
- (從第二步)重復直到調度器中沒有更多地request,引擎關閉該網站。
2.環境准備(主要是在window下)
安裝指南:https://docs.scrapy.org/en/latest/intro/install.html
中文的安裝指南:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html
2.1 安裝python版本
可以從https://www.anaconda.com/download/下載一個python,省了后期各種麻煩。
2.2 安裝scrapy
使用conda安裝
conda install -c conda-forge scrapy
或者使用pip安裝
pip install Scrapy
如果網絡不好, 可以參考下這個地址: https://www.cnblogs.com/microman/p/6107879.html
2.3 下載為win32
從http://sourceforge.net/projects/pywin32/ 選擇和python版本和操作系統對應的版本下載安裝。
官方描述了為何需要win32 :You need to install pywin32 because of this Twisted bug.
詳細信息可以看看官方網頁:https://docs.scrapy.org/en/latest/faq.html#scrapy-crashes-with-importerror-no-module-named-win32api
2.4提示c++ build(可選)
請安裝cmd終端的提示,去指定的網址提示去下載build exe安裝程序,安裝后重新啟動下,我們使用的python是cpython,所以依賴c的環境,如果你的電腦安裝有vs2015,vs2017
這些c的環境都是有的。這里就可以不用安裝了。
如果提示有這個信息。 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
如果twisted無法安裝,建議去這個地方https://pypi.python.org/pypi/Twisted/ 下載,自行安裝。然后去安裝scrapy。
2.5 配置環境變量
將你的python.exe 所在的目錄和子目錄Scripts目錄都添加到PATH環境變量中去。
比如C:\Python2.7\;C:\Python2.7\Scripts\;
2.6 測試python 和scrapy
C:\Users\Administrator>python Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import scrapy >>>
2.7 ipython 或者bpython的安裝
ipython和bpython都是python的解析器,在cmd終端下提供
ipython的安裝相對簡單,使用如下命令即可安裝
C:\Users\Administrator>conda install ipython
或者
C:\Users\Administrator>pip install ipython
如果你是在linux下編譯安裝ipython可以參考下我的另一篇博客:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_001.html
bpython的安裝有點問題:
可以參看我的另一篇博客:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_006_bpython.html
環境准備好了。 那我們就可以開始scrapy的入門學習了。
2.8開發環境
我這里使用pycharm 軟件去開發python, 當然小伙伴們也是可以使用其他的開發環境, 我這里推薦下打開也可以試試vs code 去搭建python開發環境。
