国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

scrapy入門(mén)

CrazyCodes / 1366人閱讀

摘要:快速入門(mén)首先,初步要做的就是快速構(gòu)建一個(gè)爬蟲(chóng)。然后把結(jié)果加入到一個(gè)隊(duì)列中。既然是入門(mén),我們肯定是先關(guān)心我們需要的。

因?yàn)楣卷?xiàng)目需求,需要做一個(gè)爬蟲(chóng)。所以我一個(gè)python小白就被拉去做了爬蟲(chóng)。花了兩周時(shí)間,拼拼湊湊總算趕出來(lái)了。所以寫(xiě)個(gè)blog做個(gè)記錄。
快速入門(mén)

首先,初步要做的就是快速構(gòu)建一個(gè)爬蟲(chóng)。

配置環(huán)境 Mac下安裝

1) 直接從官網(wǎng)下載
python下載官網(wǎng)

2) 是通過(guò)brew安裝
首先安裝xcode
可以選擇在App Store安裝或者使用xcode-select --install這個(gè)命令安裝

接著安裝brew

usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

把這個(gè)命令輸入終端運(yùn)行就可以安裝了
brew官網(wǎng)

接著利用brew安裝python3
brew install python3

安裝完python3以后,我們來(lái)裝scrapy。因?yàn)閜ython3是自帶pip3的,
所以如果找不到該命令的話,可以去看看python3的安裝路徑。brew是將其安裝在了usrlocalin這個(gè)目錄下。

如果pip沒(méi)安裝上的話,不要慌。我們還可以通過(guò)命令來(lái)安裝

curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

接下來(lái)安裝scrapy
輸入命令pip3 install Scrapy就可以了

windows下安裝

首先從官網(wǎng)上下載msi文件
在安裝選項(xiàng)中勾選上需要pip

然后在cmd中輸入
pip3 install Scrapy

完成

Linux安裝
sudo get-apt install python36 python36-devel gcc
sudo pip3 install Scrapy

兩條命令就搞定了。
因?yàn)槲业呐老x(chóng)是跑在docker上,有些鏡像可能沒(méi)有g(shù)cc。所以需要devel和gcc,否則有些包會(huì)安不上。切記

Redhat系的話,只需要把get-apt改成yum就可以了


快速開(kāi)始

建立項(xiàng)目 scrapy startproject demo

建立爬蟲(chóng) scrapy genspider demo_spider www.google.com

啟動(dòng)爬蟲(chóng) scrapy crwal demo_spider

當(dāng)你建立完項(xiàng)目的時(shí)候,scrapy會(huì)幫你生成一堆文件。

目錄結(jié)構(gòu)是這樣的

在你的demo項(xiàng)目中,會(huì)有個(gè)scrapy.cfg的配置文件和一個(gè)demo的文件夾

scrapy.cfg這個(gè)文件我們先暫時(shí)不去關(guān)心。我們來(lái)關(guān)心一下demo文件夾下的東西
分別是items.py,middlewares.py,pipelines.py,settings.py和一個(gè)spiders文件夾。

接著我們?nèi)?b>spiders目錄下去創(chuàng)建一個(gè)爬蟲(chóng)scrapy genspider demo_spider www.google.com

OK,爬蟲(chóng)生成功了。


spider初步解析

我們來(lái)初步解析一下這個(gè)爬蟲(chóng)。
有一個(gè)DemoSpiderSpider的類(lèi)。很明顯,這個(gè)是我們剛才生成爬蟲(chóng)的名字為demo_spider然后后面又添加了一個(gè)Spider。

接著往下看,有個(gè)name的屬性,這個(gè)屬性很重要,我們到時(shí)候啟動(dòng)爬蟲(chóng)的時(shí)候,就要通過(guò)這個(gè)name來(lái)告知scarpy啟動(dòng)的是哪個(gè)爬蟲(chóng)

allowed_demains是用來(lái)指定,我們只爬取哪些域名下的。比如說(shuō),我在爬取google的搜索結(jié)果的時(shí)候,會(huì)爬到很多別的網(wǎng)站,這個(gè)屬性就是用來(lái)告知,除了www.google.com以外的,我都不爬取。

start_urls是用來(lái)做啟動(dòng)url,看命名就知道了。可以把Scrapy的爬取過(guò)程看成一個(gè)廣度搜索。所以它會(huì)先迅速把start_urls下的所有url都爬取一遍。然后把結(jié)果加入到一個(gè)隊(duì)列中。也是因?yàn)檫@個(gè)原因,所以在做并發(fā)爬蟲(chóng)時(shí),會(huì)讓不同的爬蟲(chóng)的start_urls不一樣。當(dāng)然還有重復(fù)的問(wèn)題要解決(笑)

接下來(lái)就是parse方法了,我們對(duì)頁(yè)面的爬取也是在這個(gè)parse中解決


向外走

初步理解了spider,我們往外層走。

我們首先來(lái)假想幾個(gè)問(wèn)題,如果我是Scrapy框架的設(shè)計(jì)者,我會(huì)這么設(shè)計(jì)這個(gè)框架。
既然是通用的爬蟲(chóng)框架,那用戶是不是應(yīng)該可以操作header之類(lèi)的,讓我的每一個(gè)爬蟲(chóng)都經(jīng)過(guò)代理,或者是設(shè)置不同的cookie。

當(dāng)當(dāng)當(dāng),所以就有了中間件。middlewares.py
我們來(lái)看看Scrapy生成的是什么樣的。

既然是入門(mén),我們肯定是先關(guān)心我們需要的。看第二張圖。有這么幾個(gè)干方法process_request,process_response,process_exception
處理request,response,exception。很好,我們就要這幾個(gè)東西。

我們可以這么理解,我們的爬蟲(chóng)爬到的每一個(gè)頁(yè)面,都會(huì)經(jīng)過(guò)這些中間件。

來(lái)看看架構(gòu)圖

所以我們的數(shù)據(jù)是經(jīng)過(guò)每一個(gè)中間件。然后中間件來(lái)決定去留。

然后我們來(lái)想想具體process_request下的情況。

第一種,我修改了代理,但是我只是改了代理,我還需要把這個(gè)數(shù)據(jù)繼續(xù)下去。返回None

第二種,這個(gè)已經(jīng)處理好了,現(xiàn)在我需要想直接把數(shù)據(jù)發(fā)給spider了,這個(gè)時(shí)候,我們就需要返回一個(gè)response了。

第三種,我想要重新調(diào)度我的request.這時(shí)候只要返回request。調(diào)度器會(huì)終止process_request,然后用這個(gè)request重新開(kāi)始。

第四種,這個(gè)數(shù)據(jù)我直接丟棄了,不想用了。直接raise一個(gè)IgnoreRequest,也就是,如果你不處理這個(gè)異常,這異常就直接扔了。當(dāng)然,你還可以選擇在process_exception去處理這個(gè)異常

Python爬蟲(chóng)從入門(mén)到放棄(十七)之 Scrapy框架中Download Middleware用法


初步理解了中間件,我們來(lái)說(shuō)說(shuō)items
spider處理完數(shù)據(jù)以后,寫(xiě)入item中,然后就來(lái)到了這兒。
scrapy生成的代碼

怎么用呢。舉個(gè)例子,我在spider中需要存儲(chǔ)url。于是我在這個(gè)文件中就寫(xiě)入
url = scrapy.Field
接著在spider中生成這個(gè)item。然后將item["url"] = url,在處理完了以后。yield item
完成

這個(gè)數(shù)據(jù)呢,就會(huì)交給pipelines來(lái)處理


接著,我們來(lái)看看pipelines

我們和剛才一樣,思考一下,數(shù)據(jù)拿過(guò)來(lái)有幾種可能。

數(shù)據(jù)不是我的,我不處理。OK,我直接返回itme

數(shù)據(jù)是我的,但是數(shù)據(jù)錯(cuò)了。扔掉。raise一個(gè)DropItem就可以了

這邊呢,如果要寫(xiě)入數(shù)據(jù)庫(kù),玩玩寫(xiě)入的時(shí)間特別長(zhǎng),所以推薦使用Twisted來(lái)做一個(gè)異步寫(xiě)入


最后。我們來(lái)看看settings

配置文件,比如是否遵守robots.txt之類(lèi)的。當(dāng)然,你剛才寫(xiě)的所有middlewarespipelines。都要在這兒注冊(cè)!!!!隨便給它一個(gè)不重復(fù)的數(shù)字就好了


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42263.html

相關(guān)文章

  • Scrapy學(xué)習(xí)(二) 入門(mén)

    摘要:快速入門(mén)接上篇學(xué)習(xí)一安裝,安裝后,我們利用一個(gè)簡(jiǎn)單的例子來(lái)熟悉如何使用創(chuàng)建一個(gè)爬蟲(chóng)項(xiàng)目。創(chuàng)建一個(gè)項(xiàng)目在已配置好的環(huán)境下輸入系統(tǒng)將在當(dāng)前目錄生成一個(gè)的項(xiàng)目文件。這部分才是業(yè)務(wù)的核心部分。提取的方式有幾種。具體代碼詳見(jiàn)入門(mén)項(xiàng)目 快速入門(mén) 接上篇Scrapy學(xué)習(xí)(一) 安裝,安裝后,我們利用一個(gè)簡(jiǎn)單的例子來(lái)熟悉如何使用Scrapy創(chuàng)建一個(gè)爬蟲(chóng)項(xiàng)目。 創(chuàng)建一個(gè)Scrapy項(xiàng)目 在已配置好的環(huán)境...

    Astrian 評(píng)論0 收藏0
  • 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):環(huán)境搭建

    摘要:一基礎(chǔ)環(huán)境由于不是職業(yè)的開(kāi)發(fā)者,因此環(huán)境是基于的。二安裝打開(kāi)命令行工具創(chuàng)建虛擬環(huán)境,默認(rèn)情況下會(huì)創(chuàng)建目錄,所有的虛擬環(huán)境都會(huì)產(chǎn)生一個(gè)子目錄保存在此,里面包含基本程序文件以及庫(kù)文件。 目錄 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):環(huán)境搭建 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):頁(yè)面提取 基于 Python 的 Scrapy 爬蟲(chóng)入門(mén):圖片處理 作為一個(gè)全棧工程師(...

    Gu_Yan 評(píng)論0 收藏0
  • Scrapy入門(mén)程序點(diǎn)評(píng)

    摘要:本文大部分內(nèi)容摘抄自官網(wǎng)的,看到巧妙之處則加了點(diǎn)評(píng)。,接下來(lái)的工作至此,框架已經(jīng)明確選定了,接下來(lái),我們將進(jìn)一步研讀的文檔,研究怎樣把的封裝成需要的。,文檔修改歷史,首次發(fā)布 showImg(https://segmentfault.com/img/bVx6ZU); 1,引言 在《Scrapy的架構(gòu)初探》一文,我基于爬蟲(chóng)開(kāi)發(fā)的經(jīng)驗(yàn)對(duì)Scrapy官網(wǎng)文章作了點(diǎn)評(píng)和解讀,事件驅(qū)動(dòng)的異步處理...

    baiy 評(píng)論0 收藏0
  • scrapy入門(mén):豆瓣電影top250爬取

    摘要:本文內(nèi)容爬取豆瓣電影頁(yè)面內(nèi)容,字段包含排名,片名,導(dǎo)演,一句話描述有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別抓取數(shù)據(jù)存儲(chǔ)介紹爬蟲(chóng)框架教程一入門(mén)創(chuàng)建項(xiàng)目創(chuàng)建爬蟲(chóng)注意,爬蟲(chóng)名不能和項(xiàng)目名一樣應(yīng)對(duì)反爬策略的配置打開(kāi)文件,將修改為。 本文內(nèi)容 爬取豆瓣電影Top250頁(yè)面內(nèi)容,字段包含:排名,片名,導(dǎo)演,一句話描述 有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別 抓取數(shù)據(jù)存儲(chǔ) ...

    xialong 評(píng)論0 收藏0
  • scrapy 自學(xué)入門(mén)demo分享

    摘要:本文基于,平臺(tái)完整項(xiàng)目代碼安裝安裝官網(wǎng)下載注意環(huán)境變量是否配置成功安裝為了安裝順利,請(qǐng)備好梯子安裝過(guò)程中注意以下報(bào)錯(cuò)信息解決辦法下載對(duì)應(yīng)版本的文件表示版本表示位下載后在文件目錄下執(zhí)行文件名創(chuàng)建項(xiàng)目創(chuàng)建創(chuàng)建在項(xiàng)目跟目錄執(zhí)行配置文件 本文基于python 3.7.0,win10平臺(tái); 2018-08完整項(xiàng)目代碼:https://github.com/NameHewei/python-scr...

    linkFly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<