scrapy第一步

1.scrapy概述

1.1. 官方網(wǎng)站:http://scrapy.org [orginzation]
1.2. Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。

2.scrapy安裝

2.1 :ubuntu/macos 下掀淘,在有完善的python環(huán)境的基礎(chǔ)上直接安裝 scrapy
2.2:windows下:注意~安裝分兩步進(jìn)行

1.先安裝scrapy
# 管理員身份運(yùn)行cmd窗口
pip install scrapy
or
easy_install scrapy

PS:注意
安裝完scrapy之后,可以正常的進(jìn)行scrapy項(xiàng)目的開發(fā),但是在windows上運(yùn)行項(xiàng)目會(huì)出現(xiàn)問題因块,如果出現(xiàn)類似于WinError這樣的的問題,請(qǐng)安裝下面的模塊

2.安裝win32
# 需要安裝一個(gè)pypiwin32模塊籍铁,用于scrapy模塊可能調(diào)用win底層C庫(kù)進(jìn)行函數(shù)操作
pip install pypiwin32

3. 項(xiàng)目開發(fā)——?jiǎng)?chuàng)建scrapy項(xiàng)目

3.1:通過(guò)執(zhí)行如下命令涡上,來(lái)創(chuàng)建scrapy項(xiàng)目

# 通過(guò)scrapy命令,加上startproject選項(xiàng)拒名,創(chuàng)建一個(gè)名稱為spider_name的爬蟲項(xiàng)目
scrapy startproject <spider_name>

例如:在pycharm中直接運(yùn)行工具中的cmd終端窗口吩愧,執(zhí)行如下命令創(chuàng)建一個(gè)爬蟲項(xiàng)目

scrapy startproject myspider

創(chuàng)建好的項(xiàng)目文件結(jié)構(gòu)如下:

|-- myspider/  項(xiàng)目根目錄
    |-- scrapy.cfg  項(xiàng)目配置文件 [cfg: config]
    |-- myspider/  爬蟲 模塊->以后的爬蟲程序開發(fā)都在這個(gè)模塊中
        |-- spiders/   爬蟲程序所在的目錄
        |-- items.py   采集的數(shù)據(jù)->定義封裝模型類的模塊
        |-- pipelines.py 采集的數(shù)據(jù)->采集完成之后進(jìn)行數(shù)據(jù)驗(yàn)證、存儲(chǔ)的模塊
        |-- middlewares.py 中間件定義的模塊
        |-- settings.py 項(xiàng)目設(shè)置模塊

4. 開發(fā)爬蟲程序-智聯(lián)

準(zhǔn)備工作增显,分四部步進(jìn)行
4.1:分析爬蟲要采集的url地址雁佳,分析采集的數(shù)據(jù)字段

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E7%88%AC%E8%99%AB&sm=0&sg=cab76822e6044ff4b4b1a907661851f9&p=1]http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E7%88%AC%E8%99%AB&sm=0&sg=cab76822e6044ff4b4b1a907661851f9&p=1)

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E7%88%AC%E8%99%AB&sm=0&sg=cab76822e6044ff4b4b1a907661851f9&p=2]
招聘崗位:job
發(fā)布公司:company
薪水待遇:salary

4.2:定義采集的字段封裝的Item類型,在items.py模塊中,定義Item類

我們通過(guò)scrapy項(xiàng)目中的items.py模塊定義封裝采集數(shù)據(jù)字段的類型
為了能使用scrapy提供的各種內(nèi)置功能糖权,讓定義的類型繼承自scrapy.Item類型堵腹;類型中的字段屬性通過(guò)scrapy.Field()進(jìn)行定義!

import scrapy

class ZhilianItem(scrapy.Item):
    '''
    自定義封裝智聯(lián)招聘的item類型星澳,用于封裝采集到的智聯(lián)網(wǎng)站的數(shù)據(jù)
    '''
    # 定義屬性字段
    job = scrapy.Field()
    company = scrapy.Field()
    salary = scrapy.Field()

4.3:在spiders/zhilianspider.py中開發(fā)爬蟲程序疚顷,采集初步數(shù)據(jù)

為了可以直接使用scrapy內(nèi)置的爬蟲操作,讓scrapy自動(dòng)采集數(shù)據(jù)募判,我們需要定義一個(gè)爬蟲處理類
1.在spiders/zhilianspider.py模塊中定義ZhilianSpider類型
2.繼承自scrapy.Spider
3.類型中的屬性:name屬性~爬蟲名稱荡含,用于在命令行啟動(dòng)爬蟲時(shí)調(diào)用
4.類型中的屬性:start_urls屬性~采集數(shù)據(jù)的初始url地址[列表、元組]
5.類型中的屬性:allowed_domains屬性~采集數(shù)據(jù)的網(wǎng)站域名限制
6.類型中的方法:parse(self, response)采集完數(shù)據(jù)之后自動(dòng)執(zhí)行的函數(shù)

4.4:核心:在pipelines.py模塊中届垫,定義處理Item數(shù)據(jù)的piplelines释液,將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中給其他項(xiàng)目做數(shù)據(jù)準(zhǔn)備
備注:
引擎:engine->scrapy引擎模塊:engine.py
調(diào)度器:scheduler->scrapy調(diào)度模塊:scheduler.py

5.爬蟲采集數(shù)據(jù)篩選測(cè)試

進(jìn)入命令行,執(zhí)行命令
scrapy shell “url”
執(zhí)行之后進(jìn)入python命令行装处,此時(shí)~響應(yīng)的數(shù)據(jù)已經(jīng)被包含到response變量中了误债,可以直接操作response進(jìn)行數(shù)據(jù)篩選測(cè)試

6.開發(fā)一個(gè)完整項(xiàng)目的流程

  • 創(chuàng)建爬蟲項(xiàng)目[可以包含多個(gè)爬蟲程序
    scrapy startproject myspider
  • 定義采集數(shù)據(jù)的Item封裝類型
    修改myspider/items.py,添加ZhilianItem
    繼承scrapy.Item
    屬性通過(guò)scrapy.Field()定義
  • 開發(fā)爬蟲程序
在myspider/spiders/添加zhilianspider.py模塊
定義ZhilianSpider類型【爬蟲程序】
繼承scrapy.Spider
name屬性:爬蟲名稱妄迁,用于在命令行啟動(dòng)指定爬蟲使用
allowed_domains屬性:域名限制~限制爬蟲只能在某個(gè)域名下進(jìn)行采集 start_urls屬性:元組/列表寝蹈,定義了所有初始采集數(shù)據(jù)的url路徑
parse(self, response)函數(shù):函數(shù)中的response參數(shù)接受了下載模塊采集到的url中的數(shù)據(jù)    
         這個(gè)函數(shù)中,可以進(jìn)行數(shù)據(jù)的xpath/re/css選擇器進(jìn)行篩選
         將篩選得到的數(shù)據(jù)登淘,封裝在ZhilianItem對(duì)象中
         通過(guò)協(xié)程的方式將item對(duì)象交給pipelines.py模塊進(jìn)行處理
              yield item

  • 開發(fā)管道模塊
修改myspider/pipelines.py模塊箫老,添加ZhilianPipleline類型
    __init__(self):主要用于進(jìn)行資源的初始化操作,如打開文件黔州、打開和數(shù)據(jù)庫(kù)的連接等等耍鬓,有必要編寫
          初始化了sqlalchemy的數(shù)據(jù)庫(kù)連接
    open_spider(self, spider):當(dāng)spider爬蟲啟動(dòng)的時(shí)候自動(dòng)調(diào)用的函數(shù),也經(jīng)常用于精確的資源初始化工作流妻,一般不寫
    close_spider(self, spider):當(dāng)spider爬蟲關(guān)閉的時(shí)候自動(dòng)調(diào)用的函數(shù)牲蜀,經(jīng)常用于資源的回收,如關(guān)閉打開的文件绅这、關(guān)閉數(shù)據(jù)庫(kù)連接等等涣达,有必要編寫
          關(guān)閉了sqlalchemy的數(shù)據(jù)庫(kù)連接
    process_item(self, item, spider):核心處理函數(shù),進(jìn)行采集到的數(shù)據(jù)item中的實(shí)際數(shù)據(jù)的驗(yàn)證证薇、存儲(chǔ)工作度苔,必須寫
          通過(guò)sqlalchemy進(jìn)行了數(shù)據(jù)的存儲(chǔ)
修改myspider/settings.py設(shè)置文件,添加ITEM_PIPELINES = []配置選項(xiàng)中棕叫,將我們自定義的ZhilianPipeline注冊(cè)給scrapy   完成林螃!數(shù)據(jù)被正確采集到了數(shù)據(jù)庫(kù)中

PS:注意問題:
Python2的編碼問題、數(shù)據(jù)庫(kù)交互時(shí)的編碼問題
網(wǎng)頁(yè)數(shù)據(jù)分析問題[耗時(shí)耗力俺泣,要有耐心!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疗认,一起剝皮案震驚了整個(gè)濱河市完残,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌横漏,老刑警劉巖谨设,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缎浇,居然都是意外死亡扎拣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門素跺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)二蓝,“玉大人,你說(shuō)我怎么就攤上這事指厌】蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵踩验,是天一觀的道長(zhǎng)鸥诽。 經(jīng)常有香客問我,道長(zhǎng)箕憾,這世上最難降的妖魔是什么牡借? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮袭异,結(jié)果婚禮上钠龙,老公的妹妹穿的比我還像新娘。我一直安慰自己御铃,他們只是感情好俊鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畅买,像睡著了一般。 火紅的嫁衣襯著肌膚如雪细睡。 梳的紋絲不亂的頭發(fā)上谷羞,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音溜徙,去河邊找鬼湃缎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蠢壹,可吹牛的內(nèi)容都是我干的嗓违。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼图贸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蹂季!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤欲账,失蹤者是張志新(化名)和其女友劉穎轿钠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涕滋,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睬辐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宾肺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溯饵。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锨用,靈堂內(nèi)的尸體忽然破棺而出丰刊,到底是詐尸還是另有隱情,我是刑警寧澤黔酥,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布藻三,位于F島的核電站,受9級(jí)特大地震影響跪者,放射性物質(zhì)發(fā)生泄漏棵帽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一渣玲、第九天 我趴在偏房一處隱蔽的房頂上張望逗概。 院中可真熱鬧,春花似錦忘衍、人聲如沸逾苫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铅搓。三九已至,卻和暖如春搀捷,著一層夾襖步出監(jiān)牢的瞬間星掰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工嫩舟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氢烘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓家厌,卻偏偏與公主長(zhǎng)得像播玖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饭于,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • scrapy學(xué)習(xí)筆記(有示例版) 我的博客 scrapy學(xué)習(xí)筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲模...
    陳思煜閱讀 12,664評(píng)論 4 46
  • Python版本管理:pyenv和pyenv-virtualenvScrapy爬蟲入門教程一 安裝和基本使用Scr...
    inke閱讀 60,140評(píng)論 6 99
  • 爬蟲高級(jí)操作:Scrapy framework 章節(jié)內(nèi)容 scrapy概述 scrapy安裝 quick star...
    大牧莫邪閱讀 581評(píng)論 1 3
  • scrapy是python最有名的爬蟲框架之一蜀踏,可以很方便的進(jìn)行web抓取维蒙,并且提供了很強(qiáng)的定制型,這里記錄簡(jiǎn)單學(xué)...
    bomo閱讀 2,093評(píng)論 1 11
  • 曾經(jīng)的我最愛在大洋中漂流脓斩, 現(xiàn)在的我只想在山丘上蓋一間小木屋木西, 與你分享每一個(gè)日落日出……
    賀司閱讀 233評(píng)論 0 3