本系列上一篇:【Python | 邊學(xué)邊敲邊記】第三次:URL去重策略
今天給大家分享的是,Python里的爬蟲(chóng)框架Scrapy學(xué)習(xí),包含python虛擬環(huán)境的搭建、虛擬環(huán)境的使用、Scrapy安裝方法詳解、Scrapy基本使用、Scrapy項(xiàng)目目錄及內(nèi)容基本介紹,let's go!
推薦查看Scrapy中文幫助文檔:點(diǎn)擊 閱讀原文 靜下心來(lái)學(xué)習(xí)!
1
# 維基百科看Scrapy
2
'''
3
Scrapy(SKRAY -pee)是一個(gè)免費(fèi)和開(kāi)源 網(wǎng)絡(luò)爬行 框架 Python編寫(xiě)的。最初設(shè)計(jì)用于Web抓取,它還可
4
以用于使用API或作為通用Web爬網(wǎng)程序提取數(shù)據(jù)。它目前由網(wǎng)絡(luò)抓取開(kāi)發(fā)和服務(wù)公司Scrapinghub Ltd.維護(hù)
5
。
6
Scrapy項(xiàng)目體系結(jié)構(gòu)是圍繞“Spider”構(gòu)建的,它們是自包含的爬蟲(chóng),可以獲得一組指令。遵循其他框架的精
7
神,不重復(fù)自己的框架,例如Django,它允許開(kāi)發(fā)人員重用他們的代碼,從而更容易構(gòu)建和擴(kuò)展大型爬行項(xiàng)
8
目。Scrapy還提供了一個(gè)Web爬行shell,開(kāi)發(fā)人員可以使用它來(lái)測(cè)試他們對(duì)站點(diǎn)行為的假設(shè)。
9
(英譯漢有點(diǎn)尷尬!真的想學(xué),還是好好看上面的幫助文檔吧)
10
'''
下面 操作之前你需要準(zhǔn)備好:
(1) 你的
python
版本是3.x,最好系統(tǒng)里只有一個(gè)python環(huán)境,后面所有學(xué)習(xí)筆記都基于
py3
的。
(2)
python
環(huán)境里先安裝
virtualenv
模塊,基本方法
pip install virtualenv
。
(3)選擇好虛擬環(huán)境的安裝目錄(我選的是H盤(pán)目錄下的
env
文件夾,建議你選的目錄路徑里最好不要有中文)。
1
PS H:\env\> virtualenv spiderenv
2
Using base prefix 'c:\\users\\82055\\appdata\\local\\programs\\python\\python36'
3
New python executable in H:\env\spiderenv\Scripts\python.exe
4
Installing setuptools, pip, wheel...done.
5
注: 如果系統(tǒng)中有兩個(gè)python環(huán)境(py2和py3),新建基于py3的虛擬環(huán)境方法
6
virtualenv -python=你的Python3安裝目錄(精確到python.exe) spiderenv(虛擬環(huán)境名稱(chēng))
安裝完成后再自己選擇的目錄下會(huì)多出一個(gè)文件夾(虛擬環(huán)境),我這里為
H:\env\spiderenv
,后面所有爬蟲(chóng)學(xué)習(xí)過(guò)程中需要的模塊、接口都將
pip
(安裝)在里面。
進(jìn)入到目錄
H:\env\spiderenv\Scripts
(我的虛擬環(huán)境目錄),按住
shift
+鼠標(biāo)右鍵,打開(kāi)
powershell
或者
cmd
(如果是
powershell
就先輸入
cmd
),再輸入
activate
,進(jìn)入虛擬環(huán)境,你會(huì)發(fā)現(xiàn)在路徑前面多了一個(gè)括號(hào)里面是你的虛擬環(huán)境名稱(chēng),表示你進(jìn)入了虛擬環(huán)境。具體看下面:
1
# 注:打開(kāi)powershell 的可以參照下面操作
2
PS H:\env\spiderenv\Scripts> cmd
3
Microsoft Windows [版本 10.0.17134.112]
4
(c) 2018 Microsoft Corporation。保留所有權(quán)利。
5
6
H:\env\spiderenv\Scripts>activate
7
(spiderenv) H:\spiderenv\Scripts>
安裝
scrapy
模塊(下面操作都是在虛擬環(huán)境下):
方法一:直接pip安裝(最簡(jiǎn)單,安裝慢,可能出錯(cuò))
1
pip install scrapy
方法二:輪子(wheel)安裝(比較簡(jiǎn)單,安裝速度還可以,基本不出錯(cuò))
點(diǎn)擊這里下載scrapy的
.whl
文件,然后移動(dòng)到你的虛擬環(huán)境目錄下(比如我的就移動(dòng)到
H:\env\spiderenv\Scripts
),
1
pip install Scrapy-1.5.1-py2.py3-none-any.whl
方法三:豆瓣源安裝(比較簡(jiǎn)單,安裝速度快,方便,推薦)
1
pip install -i https://pypi.douban.com/simple/ scrapy
安裝
virtualenvwrapper
模塊,用于管理我們所建的虛擬環(huán)境
1
# windows下安裝方法
2
pip install virtualenvwrapper-win
3
# 其他環(huán)境下安裝
4
pip install virtualenvwrapper
安裝完成后,打開(kāi)
控制面板
- >
系統(tǒng)
->
高級(jí)系統(tǒng)設(shè)置
- >
環(huán)境變量
->
系統(tǒng)變量
->
新建
,在
新建系統(tǒng)環(huán)境變量對(duì)話(huà)框
中輸入如下
1
變量名:WORKON_HOME
2
變量值:你的虛擬環(huán)境安裝目錄
3
比如:我的虛擬環(huán)境spiderenv安裝在H:\env目錄下,我的變量值就為:H:\env\
4
注:變量值最后一定要以 \ 結(jié)尾,不然可能不會(huì)產(chǎn)生效果。
cmd
執(zhí)行下面命令,即可簡(jiǎn)單快速進(jìn)入虛擬環(huán)境:
1
PS C:\Users\82055\Desktop> cmd
2
Microsoft Windows [版本 10.0.17134.112]
3
(c) 2018 Microsoft Corporation。保留所有權(quán)利。
4
5
C:\Users\82055\Desktop>workon
6
7
Pass a name to activate one of the following virtualenvs:
8
==============================================================================
9
spiderenv
10
11
C:\Users\82055\Desktop>workon spiderenv
12
(spiderenv) C:\Users\82055\Desktop>
13
# 注釋?zhuān)撼晒M(jìn)入,退出虛擬環(huán)境命令為 : deactivate
1
# 進(jìn)入到自己的項(xiàng)目存放目錄
2
(spiderenv) H:\env>cd H:\spider_project
3
4
# 使用scrapy命令創(chuàng)建一個(gè)新工程
5
(spiderenv) H:\spider_project>scrapy startproject spider_bole_blog
6
7
New Scrapy project 'spider_bole_blog', using template directory 'h:\\env\\spiderenv\\
8
lib\\site-packages\\scrapy\\templates\\project', created in:
9
H:\spider_project\spider_bole_blog
10
# 提示創(chuàng)建網(wǎng)站爬蟲(chóng)命令
11
You can start your first spider with:
12
cd spider_bole_blog
13
scrapy genspider example example.com
創(chuàng)建成功后文件目錄結(jié)構(gòu):
1
spider_bole_blog/
2
spider_bole_blog/
3
spiders/
4
__init__.py
5
__init__.py
6
items.py
7
pipelines.py
8
settings.py
9
scrapy.cfg
目錄功能基本介紹:
1
spider_bole_blog/: 該項(xiàng)目的python模塊。之后我們將在此加入代碼。
2
spider_bole_blog/spiders/: 放置spider代碼的目錄。
3
spider_bole_blog/items.py: 項(xiàng)目中的item文件。
4
spider_bole_blog/pipelines.py: 項(xiàng)目中的pipelines文件。
5
spider_bole_blog/settings.py: 項(xiàng)目的設(shè)置文件。
6
scrapy.cfg: 項(xiàng)目的配置文件。
創(chuàng)建一個(gè)
jobbole
(伯樂(lè)在線(xiàn))的爬蟲(chóng)項(xiàng)目文件:
1
# 進(jìn)入項(xiàng)目文件
2
(spiderenv) H:\spider_project>cd spider_bole_blog
3
4
# 執(zhí)行命令,創(chuàng)建一個(gè)基于Srapy的伯樂(lè)在線(xiàn)的爬蟲(chóng)
5
(spiderenv) H:\spider_project\spider_bole_blog>scrapy genspider jobbole blog.jobbole.com
6
7
Created spider 'jobbole' using template 'basic' in module:
8
spider_bole_blog.spiders.jobbole
執(zhí)行完成后會(huì)在項(xiàng)目的
spiders
目錄下多出一個(gè)
jobbole.py
文件,文件內(nèi)容如下:
1
# -*- coding: utf-8 -*-
2
# 編碼
3
import
scrapy
4
# 導(dǎo)入scrapy包
5
6
#繼承scrapy.Spider的 JobboleSpider 爬蟲(chóng)類(lèi)
7
class
JobboleSpider
(scrapy.Spider)
:
8
9
# 用于區(qū)別Spider。 該名字必須是唯一的,您不可以為不同的Spider設(shè)定相同的名字。
10
name =
'jobbole'
11
12
# 允許下載(訪(fǎng)問(wèn))域
13
allowed_domains = [
'blog.jobbole.com'
]
14
15
# 包含了Spider在啟動(dòng)時(shí)進(jìn)行爬取的url列表。
16
# 因此,第一個(gè)被獲取到的頁(yè)面將是其中之一。
17
# 后續(xù)的URL則從初始的URL獲取到的數(shù)據(jù)中提取。
18
start_urls = [
'http://blog.jobbole.com/'
]
19
20
# 是spider的一個(gè)方法。
21
# 被調(diào)用時(shí),每個(gè)初始URL完成下載后生成的 Response 對(duì)象將會(huì)作為唯一的參數(shù)傳遞給該函數(shù)。
22
# 該方法負(fù)責(zé)解析返回?cái)?shù)據(jù)(response data),提取數(shù)據(jù)(生成item)以及生成需要進(jìn)一步處理的URL
23
# 的 Request 對(duì)象。
24
def
parse
(self, response)
:
25
pass
????今天講的東西涵蓋面還比較廣,特別是虛擬環(huán)境管理這塊,
virtualenvwrapper
還有很多命令,很實(shí)用,后面會(huì)慢慢給大家提及,大家也可以自己百度、谷歌查一下,另外,
Scrapy
模塊今天也算正式開(kāi)始,go on!