亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Scrapy Demo

VEIGHTZ / 1890人閱讀

摘要:用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給。中間件位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應(yīng)。包含了在啟動時進(jìn)行爬取的列表。對象經(jīng)過調(diào)度,執(zhí)行生成對象并送回給方法一般返回實(shí)例。

Scrapy 是什么

Scrapy 是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。
其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 也可以應(yīng)用在獲取 API 所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲。Scrapy 用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。

現(xiàn)在最新版本為 1.0,同時支持 2.7.x 和 3.x。

官方網(wǎng)站

中文版document

Scrapy 架構(gòu)

Scrapy 使用了 Twisted 異步網(wǎng)絡(luò)庫來處理網(wǎng)絡(luò)通訊, 整體架構(gòu)大致如下:

Scrapy 主要包括了以下組件:

Scrapy Engine:用來處理整個系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù)。

Scheduler:用來接受引擎發(fā)過來的請求,壓入隊(duì)列中,并在引擎再次請求的時候返回。

Downloader:用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給 Spiders。

Spiders:Spiders 是主要干活的,用它來制訂特定域名或網(wǎng)頁的解析規(guī)則。

Item Pipeline:負(fù)責(zé)處理由 Spiders 從網(wǎng)頁中抽取的項(xiàng)目,它的主要任務(wù)是清晰、驗(yàn)證和存儲數(shù)據(jù)。當(dāng)頁面被 Spiders 解析后,將被發(fā)送到 Item Pipeline,并經(jīng)過幾個特定的次序處理數(shù)據(jù)。

Downloader 中間件:位于Scrapy引擎和下載器之間的鉤子框架,主要是處理 Scrapy 引擎與下載器之間的請求及響應(yīng)。

Spider 中間件:介于 Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應(yīng)輸入和請求輸出。

Scheduler 中間件:介于Scrapy引擎和調(diào)度之間的中間件,從Scrapy引擎發(fā)送到調(diào)度的請求和響應(yīng)。
  

使用Scrapy可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,它為我們完成了大量的工作,而不需要自己費(fèi)大力氣去開發(fā)。

下載安裝
pip install scrapy
Hello World 創(chuàng)建工程

在 cmd 下切換到想創(chuàng)建 scrapy 項(xiàng)目的地方,然后使用命名

scrapy startproject tutorial

:tutorial 為工程名
然后就會發(fā)現(xiàn)在當(dāng)前位置會多出一個文件夾,名字是 tutorial。它的目錄結(jié)構(gòu)是這樣的:

tutorial/
    scrapy.cfg
    tutorial/
        spiders/
            __init__.py
        __init__.py
        items.py
        pipelines.py
        settings.py


scrapy.cfg 是該項(xiàng)目的全局配置文件
tutorial/: 該項(xiàng)目的python模塊。
tutorial/items.py: 項(xiàng)目中的item文件.
tutorial/pipelines.py: 項(xiàng)目中的pipelines文件.
tutorial/settings.py: 項(xiàng)目的設(shè)置文件.
tutorial/spiders/: 放置spider代碼的目錄.

定義 Item

Item 是保存爬取到的數(shù)據(jù)的容器;其使用方法和python字典類似。雖然您也可以在 Scrapy 中直接使用dict,但是 Item 提供了額外保護(hù)機(jī)制來避免拼寫錯誤導(dǎo)致的未定義字段錯誤。
這里這樣寫

# -*- coding: utf-8 -*-
import scrapy
class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

DmozItem 為該 Item 的名字, 該類是一個 scrapy.Item 類。
我這里想獲取到的信息是 title、link 和 desc 這三個字段,它們都是 scrapy.Field 類型的。

編寫爬蟲

在 tutorial/spiders/ 下創(chuàng)建一個 py 文件 dmoz_spider.py,它是這樣定義的:

import scrapy
from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath("http://ul[@class="directory-url"]/li")
        for sel in sites:
            item = DmozItem() # 實(shí)例化一個 DmozItem 類
            item["title"] = sel.xpath("a/text()").extract()
            item["link"] = sel.xpath("a/@href").extract()
            item["desc"] = sel.xpath("text()").extract()
            yield item

爬蟲類必須繼承自 scrapy.Spider 類, 且定義一些屬性:
name: 用于區(qū)別 Spider。 該名字必須是唯一的,不可以為不同的 Spider 設(shè)定相同的名字。
start_urls: 包含了 Spider 在啟動時進(jìn)行爬取的 url 列表。 因此,第一個被獲取到的頁面將是其中之一, 后續(xù)的URL則從初始的URL獲取到的數(shù)據(jù)中提取。
parse() 是 spider 的一個方法。 被調(diào)用時,每個初始 URL 完成下載后生成的 Response 對象將會作為唯一的參數(shù)傳遞給該函數(shù)。 該方法負(fù)責(zé)解析返回的數(shù)據(jù)(response data),提取數(shù)據(jù)(生成 item )以及生成需要進(jìn)一步處理的 URL 的 Request 對象。scrapy 為 Spider 的 start_urls 屬性中的每個URL創(chuàng)建了 scrapy.Request 對象,并將 parse 方法作為回調(diào)函數(shù)(callback)賦值給了 Request。Request 對象經(jīng)過調(diào)度,執(zhí)行生成 scrapy.http.Response 對象并送回給 spider parse() 方法, 一般返回 Item 實(shí)例。

爬取

進(jìn)入該工程目錄,本例中就是 tutorial/, 在命令行執(zhí)行

scrapy crawl dmoz
保存

可以使用如下命令

scrapy crawl dmoz -o items.json

該命令是說將結(jié)果保存在 items.json 文件中。

常用的命令行工具
# 創(chuàng)建項(xiàng)目
scrapy startproject myproject
# 幫助信息
scrapy  -h 
# 幫助信息
scrapy -h 
# 使用下載器下載指定的url,并將獲取到的內(nèi)容送到標(biāo)準(zhǔn)輸出
scrapy fetch 
# 在瀏覽器中打開給定的URL,并以Scrapy spider獲取到的形式展現(xiàn)
scrapy view 
# 以給定的URL(如果給出)或者空(沒有給出URL)啟動Scrapy shell
scrapy shell [url]
#在未創(chuàng)建項(xiàng)目的情況下,運(yùn)行一個編寫在Python文件中的spider
scrapy runspider 
# 獲取Scrapy的設(shè)定
scrapy settings [options]
-------------------------以上不需要項(xiàng)目,以下需要在項(xiàng)目中----------------------------------------
# 使用 template 模版來信創(chuàng)建一個 spider, name 值為, allowed_domains 值為  
scrapy genspider [-t template]   
# 查看可用的模版,默認(rèn)有 basic、crawl、csvfeed 和 xmlfeed 4個
scrapy genspider -l
# 查看 TEMPLATE 信息
scrapy genspider -d TEMPLATE 
# 使用進(jìn)行爬取數(shù)據(jù)
scrapy crawl 
# 列出當(dāng)前項(xiàng)目中所有可用的 spider
scrapy list
# 運(yùn)行contract檢查。
scrapy check [-l] 
# 獲取給定的URL并使用相應(yīng)的spider分析處理,可以解析成自己寫的 item
scrapy parse  [options]

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/38320.html

相關(guān)文章

  • 【python爬蟲學(xué)習(xí) 】python3.7 scrapy 安裝,demo實(shí)例,實(shí)踐:爬取百度

    摘要:安裝可能的問題問題解決實(shí)例教程中文教程文檔第一步創(chuàng)建項(xiàng)目目錄第二步進(jìn)入創(chuàng)建爬蟲第三步創(chuàng)建存儲容器,復(fù)制項(xiàng)目下的重命名為第四步修改提取數(shù)據(jù)引入數(shù)據(jù)容器第五步解決百度首頁網(wǎng)站抓取空白問題設(shè)置設(shè)置用戶代理解決相關(guān)解決數(shù)據(jù)保存亂 pip 安裝 pip install scrapy 可能的問題: 問題/解決:error: Microsoft Visual C++ 14.0 is requi...

    asoren 評論0 收藏0
  • scrapy入門

    摘要:快速入門首先,初步要做的就是快速構(gòu)建一個爬蟲。然后把結(jié)果加入到一個隊(duì)列中。既然是入門,我們肯定是先關(guān)心我們需要的。 因?yàn)楣卷?xiàng)目需求,需要做一個爬蟲。所以我一個python小白就被拉去做了爬蟲。花了兩周時間,拼拼湊湊總算趕出來了。所以寫個blog做個記錄。 快速入門 首先,初步要做的就是快速構(gòu)建一個爬蟲。 配置環(huán)境 Mac下安裝 1) 直接從官網(wǎng)下載 python下載官網(wǎng) 2) 是通過...

    CrazyCodes 評論0 收藏0
  • scrapy 自學(xué)入門demo分享

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

    linkFly 評論0 收藏0
  • Python爬蟲入門

    摘要:什么是爬蟲一段自動抓取互聯(lián)網(wǎng)信息的程序,從互聯(lián)網(wǎng)上抓取對于我們有價值的信息四種基本數(shù)據(jù)結(jié)構(gòu)列表列表中的每個元素都是可變的列表的元素都是有序的,也就是說每個元素都有對應(yīng)的位置列表可以容納所有的對象波波超哥小明波波超哥小明如果為切片返回的也是列 什么是爬蟲? 一段自動抓取互聯(lián)網(wǎng)信息的程序,從互聯(lián)網(wǎng)上抓取對于我們有價值的信息 Python四種基本數(shù)據(jù)結(jié)構(gòu) 列表 **列表中的每個元素都是可變的...

    xbynet 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<