1. 程式人生 > >Python3環境安裝Scrapy爬蟲框架過程

Python3環境安裝Scrapy爬蟲框架過程

-o 每一個 evel base awl 列表 all field size

Python3環境安裝Scrapy爬蟲框架過程

1. 安裝wheel

pip install wheel

技術分享圖片

安裝檢查:

技術分享圖片

2. 安裝lxml pip install lxml-4.2.1-cp36-cp36m-win_amd64.whl

去https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下載對應的Python版本

技術分享圖片

選擇對於的版本進行下載:cp36代表的是Python版本是多少,這裏我的版本是python36,操作系統是win64位的,所以我下載文件

lxml-4.2.1-cp36-cp36m-win_amd64.whl

下載下來的Python36 lxml 版本

技術分享圖片

在DOS下切換到下載的目錄下(cd D:\soft\Scrapy環境搭建)

執行:pip install lxml-4.2.1-cp36-cp36m-win_amd64.whl

技術分享圖片

3. 安裝zope.interface

到官方網站https://pypi.python.org/pypi/zope.interface#downloads下載對應版本的wheel文件,如果沒有登錄,需要登錄。

技術分享圖片

技術分享圖片

在DOS下切換到下載的目錄下(cd D:\soft\Scrapy環境搭建)。

執行:pip install zope.interface-4.5.0-cp36-cp36m-win_amd64.whl

技術分享圖片

4. 安裝pyOpenSSL

官方網站下載wheel文件,https://pypi.python.org/pypi/pyOpenSSL#downloads

技術分享圖片

下載pyOpenSSL-17.5.0-py2.py3-none-any.whl

技術分享圖片

在DOS下切換到下載的目錄下(cd D:\soft\Scrapy環境搭建)。

執行:pip install pyOpenSSL-17.5.0-py2.py3-none-any.whl

技術分享圖片

5. 安裝Twisted

同理,http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted下載wheel文件,利用pip安裝即可。
如Python 3.6版本,Windows 64位系統,下載
Twisted-17.9.0-cp36-cp36m-win_amd64.whl,然後pip安裝。

技術分享圖片

在DOS下切換到下載的目錄下

執行:pip install Twisted-17.9.0-cp36-cp36m-win_amd64.whl

技術分享圖片

6. 安裝pywin32

從官方網站 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/ 下載對應版本的安裝包安裝。

技術分享圖片

下載

技術分享圖片

安裝:

技術分享圖片

在安裝時會出現提示python3.6-32在註冊表中不存在。

處理windos64位下python3.6安裝pywin32的問題的方法

方法一

這個報的錯是因為註冊表問題,於是百度到下面一段代碼

技術分享圖片

這段代碼執行以後可以自動將py3.6安裝目錄直接添加進註冊表,檢查了下註冊表,的確出現了。

第一步按“win+R”或者點擊開始菜單,找到運行,在運行輸入框裏面輸入“regedit”,如下圖所示:

技術分享圖片

在HKEY-CURRENT_USER–Software–Python–PythonCore–會發現3.6-32文件夾

技術分享圖片

方法二: 把註冊表3.6導出,名稱另存為3.6-32,再導入註冊表,重啟電腦即可。

技術分享圖片

處理完之後,就可以安裝pywin32-220.win-amd64-py3.6

技術分享圖片

7. 安裝Scrapy pip install Scrapy

最後安裝Scrapy即可,依然使用pip,命令如下:

技術分享圖片

Scrapy 安裝成功驗證

技術分享圖片

制作 Scrapy 爬蟲一共需要4步:

  • 新建項目 (scrapy startproject xxx):新建一個新的爬蟲項目
  • 明確目標 (編寫items.py):明確你想要抓取的目標
  • 制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁
  • 存儲內容 (pipelines.py):設計管道存儲爬取內容

步驟:

一. 新建項目(scrapy startproject)

1. 新建一個文件夾存放scrapy項目(D:\爬蟲_script\scrapy_project)。

技術分享圖片

2.從dos下進入到該目錄下

技術分享圖片

3.新建一個新的爬蟲項目:scrapy startproject mySpiter

技術分享圖片

技術分享圖片

下面來簡單介紹一下各個主要文件的作用:

scrapy.cfg :項目的配置文件

mySpider/ :項目的Python模塊,將會從這裏引用代碼

mySpider/items.py :項目的目標文件

mySpider/pipelines.py :項目的管道文件

mySpider/settings.py :項目的設置文件

mySpider/spiders/ :存儲爬蟲代碼目錄

二、明確目標(mySpider/items.py)

我們打算抓取:http://www.itcast.cn/channel/teacher.shtml 網站裏的所有講師的姓名、職稱和個人信息。

打開mySpider目錄下的items.py

Item 定義結構化數據字段,用來保存爬取到的數據,有點像Python中的dict,但是提供了一些額外的保護減少錯誤。

可以通過創建一個 scrapy.Item 類, 並且定義類型為 scrapy.Field的類屬性來定義一個Item(可以理解成類似於ORM的映射關系)。

接下來,創建一個ItcastItem 類,和構建item模型(model)。

import scrapy

class ItcastItem(scrapy.Item):

name = scrapy.Field()

level = scrapy.Field()

info = scrapy.Field()

三、制作爬蟲 (spiders/itcastSpider.py)

爬蟲功能要分兩步:

1. 爬數據

  • 在當前目錄下輸入命令,將在mySpider/spider目錄下創建一個名為itcast的爬蟲,並指定爬取域的範圍:
  • 打開 mySpider/spider目錄裏的 itcast.py,默認增加了下列代碼:
scrapy genspider itcast "itcast.cn"
import scrapy
 
class ItcastSpider(scrapy.Spider):
    name = "itcast"
    allowed_domains = ["itcast.cn"]
    start_urls = (
        ‘http://www.itcast.cn/‘,
    )
 
    def parse(self, response):
        pass
其實也可以由我們自行創建itcast.py並編寫上面的代碼,只不過使用命令可以免去編寫固定代碼的麻煩

要建立一個Spider, 你必須用scrapy.Spider類創建一個子類,並確定了三個強制的屬性 和 一個方法。

  • name = "" :這個爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字。
  • allow_domains = [] 是搜索的域名範圍,也就是爬蟲的約束區域,規定爬蟲只爬取這個域名下的網頁,不存在的URL會被忽略。
  • start_urls = () :爬取的URL元祖/列表。爬蟲從這裏開始抓取數據,所以,第一次下載的數據將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。
  • parse(self, response) :解析的方法,每個初始URL完成下載後將被調用,調用的時候傳入從每一個URL傳回的Response對象來作為唯一參數,主要作用如下:
  1. 負責解析返回的網頁數據(response.body),提取結構化數據(生成item)
  2. 生成需要下一頁的URL請求。
將start_urls的值修改為需要爬取的第一個url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改parse()方法
def parse(self, response):
    filename = "teacher.html"
    open(filename, ‘w‘).write(response.body)

然後運行一下看看,在mySpider目錄下執行:

scrapy crawl itcast

是的,就是 itcast,看上面代碼,它是 ItcastSpider 類的 name 屬性,也就是使用 scrapy genspider命令的唯一爬蟲名。

運行之後,如果打印的日誌出現 [scrapy] INFO: Spider closed (finished),代表執行完成。 之後當前文件夾中就出現了一個 teacher.html 文件,裏面就是我們剛剛要爬取的網頁的全部源代碼信息。

2. 取數據

  • 爬取整個網頁完畢,接下來的就是的取過程了,首先觀察頁面源碼:

技術分享圖片

<div class="li_txt">
    <h3>  xxx  </h3>
    <h4> xxxxx </h4>
    <p> xxxxxxxx </p>

保存數據

scrapy保存信息的最簡單的方法主要有四種,-o 輸出指定格式的文件,,命令如下:
# json格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.json 
# json lines格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.jsonl 
# csv 逗號表達式,可用Excel打開
scrapy crawl itcast -o teachers.csv 
# xml格式
scrapy crawl itcast -o teachers.xml


Python3環境安裝Scrapy爬蟲框架過程