成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

scrapy入門

CrazyCodes / 1462人閱讀

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

因?yàn)楣卷?xiàng)目需求,需要做一個(gè)爬蟲。所以我一個(gè)python小白就被拉去做了爬蟲?;藘芍軙r(shí)間,拼拼湊湊總算趕出來了。所以寫個(gè)blog做個(gè)記錄。
快速入門

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

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

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

2) 是通過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以后,我們來裝scrapy。因?yàn)閜ython3是自帶pip3的,
所以如果找不到該命令的話,可以去看看python3的安裝路徑。brew是將其安裝在了usrlocalin這個(gè)目錄下。

如果pip沒安裝上的話,不要慌。我們還可以通過命令來安裝

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

接下來安裝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是跑在docker上,有些鏡像可能沒有g(shù)cc。所以需要devel和gcc,否則有些包會(huì)安不上。切記

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


快速開始

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

建立爬蟲 scrapy genspider demo_spider www.google.com

啟動(dò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)心。我們來關(guān)心一下demo文件夾下的東西
分別是items.py,middlewares.py,pipelines.py,settings.py和一個(gè)spiders文件夾。

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

OK,爬蟲生成功了。


spider初步解析

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

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

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

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

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


向外走

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

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

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

既然是入門,我們肯定是先關(guān)心我們需要的??吹诙垐D。有這么幾個(gè)干方法process_request,process_response,process_exception
處理request,response,exception。很好,我們就要這幾個(gè)東西。

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

來看看架構(gòu)圖

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

然后我們來想想具體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重新開始。

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

Python爬蟲從入門到放棄(十七)之 Scrapy框架中Download Middleware用法


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

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

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


接著,我們來看看pipelines

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

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

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

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


最后。我們來看看settings

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


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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/42263.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

    摘要:本文基于,平臺(tái)完整項(xiàng)目代碼安裝安裝官網(wǎng)下載注意環(huán)境變量是否配置成功安裝為了安裝順利,請備好梯子安裝過程中注意以下報(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元查看
<