Python3環境安裝Scrapy爬蟲框架過程
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對象來作為唯一參數,主要作用如下:
- 負責解析返回的網頁數據(response.body),提取結構化數據(生成item)
- 生成需要下一頁的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爬蟲框架過程