天天看點

Wiki——Windows下python2.7 爬蟲架構Scrapy環境配置Wiki——Windows下python2.7 爬蟲架構Scrapy環境配置

Wiki——Windows下python2.7 爬蟲架構Scrapy環境配置

MaxSteal工程wiki

guowei.liu(blyde), 初級研發工程師

2015/8/22 21:19:43

1.開發環境介紹

1.1 作業系統

windows 7 sp1 64bit

1.2 python版本

python 2.7.10(32bit)

https://www.python.org/downloads/

備注: Windows下最好使用32bit,很多py庫都是32bit的,可以直接安裝

1.3 開發IDE

PyCharm 4.5.3 (Community Edition)

https://www.jetbrains.com/pycharm/

備注: 選擇專業版還是社群版都可以,破解方法也蠻好找的

選擇PyCharm的原因是平台優美,功能齊全,使用Git版本控制也非常友善

1.4 Scrapy版本

Scrapy1.0

http://scrapy.org/

一個快速,簡單,易擴充的的開源爬蟲架構。

Scrapy有非常成熟的介紹文檔,國内的開發者也對文檔進行了大量的翻譯,還可以找到很多志同道合的開發者一起讨論相關問題,是初學者的一個比較好的選擇。

是純Python開發的一個快速,高層次的螢幕抓取和web抓取架構,用于抓取web站點并從頁面中提取結構化的資料。

Scrapy用途廣泛,可以用于資料挖掘、監測和自動化測試。

在本工程中,将用于資料的各相關網站的資料抓取,為本站提供資源。

Scrapy 1.0英文開發文檔

Scrapy 0.25中文開發文檔

2.Scrapy安裝

2.1 安裝python的包管理工具 pip

一般安裝python時都是自帶的pip工具,要使用的話得先配置python的環境變量

向系統變量中添加python安裝目錄,比如我把python 安裝到D盤目錄下,即添加

D:\Python27\;D:\Python27\Scripts;

檢查是否添加成功: 重新打開cmd,輸入

python

,若打開Python 2.7.10編輯器環境,即成功

檢查是否安裝pip: 退出python解析器環境,輸入

pip

出現等待并提示沒有輸入包名字的,即成功

如果說沒有pip這個指令 就得自行安裝了,去官網下載下傳安裝pip即可。

2.2 安裝Scrapy

pip install scrapy

在配置好pip的前提下安裝,保證網絡良好即可

檢查是否安裝成功: 輸入

python

進入python編輯器環境,輸入

import scrapy

,若沒有報異常即安裝成功啦!

3.初試Scrapy

3.1 參考中文文檔或英文文檔

以Open Directory Project(dmoz) (dmoz) 為例來講述爬取。

本篇教程中将帶您完成下列順序任務:

1. 建立一個Scrapy項目

2. 定義提取的Item

3. 編寫爬取網站的spider 并提取Item

4. 編寫 Item Pipeline 來存儲提取到的Item(即資料)

3.1.1 建立項目

在開始爬取之前,您必須建立一個新的Scrapy項目。進入您的WorkSpace目錄中使用`Shift + 右鍵` 打開cmd,運作下列指令:

“scrapy startproject tutorial“

該指令将會在您的WorkSpace目錄下建立包含下列内容的tutorial 目錄: tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py … 這些檔案分别是:

scrapy.cfg:             項目的配置檔案
    tutorial/:              該項目的python子產品.之後您将在此加入代碼。
    tutorial/items.py:      項目中的item檔案.
    tutorial/pipelines.py:  項目中的pipelines檔案.
    tutorial/settings.py:   項目的設定檔案.
    tutorial/spiders/:      放置spider代碼的目錄.
           

3.1.2 編寫第一個Scrapy爬蟲

Spider是使用者編寫用于從單個網站(或者一些網站)爬取資料的類。

其包含了一個用于下載下傳的初始URL,如何跟進網頁中的連結以及如何分析頁面中的内容, 提取生成 item 的方法。

為了建立一個Spider,您必須繼承 scrapy.Spider 類, 且定義以下三個屬性:

name:       用于差別Spider。 該名字必須是唯一的,您不可以為不同的Spider設定相同的名字。
    start_urls: 包含了Spider在啟動時進行爬取的url清單。 是以,第一個被擷取到的頁面将是其中之一。後續的URL則從初始的URL擷取到的資料中提取。
    parse()     是spider的一個方法。 被調用時,每個初始URL完成下載下傳後生成的 Response 對象将會作為唯一的參數傳遞給該函數。 該方法負責解析傳回的資料(response data),提取資料(生成item)以及生成需要進一步處理的URL的 Request 對象。
           

以下為我們的第一個Spider代碼,儲存在 tutorial/spiders 目錄下的 DmozSpider.py 檔案中:(注意調整格式!!!)

import scrapy

    class DmozSpider(scrapy.spiders.Spider):
        name = "dmoz"
        allowed_domains = ["dmoz.org"]
        start_urls = [
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
            "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
        ]

        def parse(self, response):
            filename = response.url.split("/")[-]
            with open(filename, 'wb') as f:
                f.write(response.body)
           

3.1.3 爬取

進入Workspace中的項目根目錄`tutorial/`,使用`Shift + 右鍵` 打開cmd并執行下列指令啟動spider:

`scrapy crawl dmoz`

`dmoz` 就是您的爬蟲名,就是 DmozSpider 類中的 name

啟動用于爬取 dmoz.org 網站的spider,

您将得到類似的輸出:

-- ::- [scrapy] INFO: Scrapy started (bot: tutorial)
    -- ::- [scrapy] INFO: Optional features available: ...
    -- ::- [scrapy] INFO: Overridden settings: {}
    -- ::- [scrapy] INFO: Enabled extensions: ...
    -- ::- [scrapy] INFO: Enabled downloader middlewares: ...
    -- ::- [scrapy] INFO: Enabled spider middlewares: ...
    -- ::- [scrapy] INFO: Enabled item pipelines: ...
    -- ::- [dmoz] INFO: Spider opened
    -- ::- [dmoz] DEBUG: Crawled () <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None)
    -- ::- [dmoz] DEBUG: Crawled () <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None)
    -- ::- [dmoz] INFO: Closing spider (finished)
           

意味着您的爬蟲架構Scrapy環境配置成功啦!!!

3.2 可能遇到的問題

3.2.1 ImportError: Nomodule named win32api

python環境中缺少win32api子產品

win32api下載下傳位址(sourceforge.net)

選擇最新的版本下載下傳安裝即可。對我來說,我選擇的是pywin32-219.win32-py2.7.exe

3.2.2 其他問題

複制代碼的時候可能會影響代碼的格式,一定要好好檢查代碼格式,不然會報很多錯

根據報的錯誤檢查代碼的問題往往能解決大量問題

下一步

根據Scrapy的PDF教程學習使用Scrapy

Scrapy離線PDF

歡迎交流學習

我也是一個Scrapy新手,正在北京實習中,正在做一個垂直搜尋引擎,是以就玩玩scrapy,整理一個wiki,友善自己以後檢視,也希望給其他新手一些幫助,謝謝!

轉載請注明出處

http://blog.csdn.net/u010183402/article/details/47864497

guowei.liu