欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中scrapy框架的ltem和scrapy.Request詳解

 更新時(shí)間:2023年09月20日 08:32:47   作者:松鼠愛吃餅干  
這篇文章主要介紹了Python中scrapy框架的ltem和scrapy.Request詳解,Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似,不過,相比字典,Item提供了額外的保護(hù)機(jī)制,可以避免拼寫錯(cuò)誤或者定義字段錯(cuò)誤,需要的朋友可以參考下

Item

Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似。不過,相比字典,Item提供了額外的保護(hù)機(jī)制,可以避免拼寫錯(cuò)誤或者定義字段錯(cuò)誤。

創(chuàng)建Item需要繼承scrapy.Item類,并且定義類型為scrapy.Field的字段。在創(chuàng)建項(xiàng)目開始的時(shí)候Item文件是這樣的。

import scrapy
class Tutorial1tem(scrapy.Item):
    #define the fields for your item here 7ike:#參照下面這個(gè)參數(shù)定義你的字段
    #name = scrapy.Fie1d()
    pass

在保存數(shù)據(jù)的時(shí)候可以每次初始化一個(gè)字典等格式,但是最方便,最好的保存方式就是使用Scrapy自帶的ltem數(shù)據(jù)結(jié)構(gòu)了。

我們學(xué)習(xí)了從頁(yè)面中提取數(shù)據(jù)的方法,接下來學(xué)習(xí)如何封裝爬取到的數(shù)據(jù)。應(yīng)該用怎樣的數(shù)據(jù)結(jié)構(gòu)來維護(hù)這些零散的信息字段呢?最容易想到是使用Python字典(dict)。

回顧之前的代碼

class Quotesspider(scrapy.spider):
    name = 'quotes'
    a1lowed_domains = ['toscrape.com']
    start_ur1s = ['http: //quotes.toscrape.com/']
def parse(self,response):
    quotes = response.css( '.quote ' )
    for quote in quotes :
        text = quote.css('.text: :text ').get()
        author = quote.css( '.author : :text ').get()
        tags = quote.css( '.tag : :text ' ).getall()
    yield {
    'text':text,
    'author':author,
    'tags ' : tags,
    }

在該案例中,我們便使用了Python字典存儲(chǔ)一本書的信息,但字典可能有以下缺點(diǎn):

(1)無法一目了然地了解數(shù)據(jù)中包含哪些字段,影響代碼可讀性。

(2缺乏對(duì)字段名字的檢測(cè),容易因程序員的筆誤而出錯(cuò)。

(3)不便于攜帶元數(shù)據(jù)(傳遞給其他組件的信息)。

ltem和Field

Scrapy提供了以下兩個(gè)類,用戶可以使用它們自定義數(shù)據(jù)類(如書籍信息),封裝爬取到的數(shù)據(jù):

1. ltem基類

數(shù)據(jù)結(jié)構(gòu)的基類,在items.py中定義數(shù)據(jù)結(jié)構(gòu)時(shí),需要繼承自該基類。

2. Field類

用來描述自定義數(shù)據(jù)類包含哪些字段(如name、price等)。

自定義一個(gè)數(shù)據(jù)類,只需繼承l(wèi)tem,并創(chuàng)建一系列Field對(duì)象的類屬性即可。

以定義書籍信息quote為例,它包含個(gè)字段,分別為書的名字text、author和tags,代碼如下:

#特殊的字典結(jié)構(gòu)可以在scrapy中傳遞數(shù)據(jù)
class TutorialItem(scrapy.Item):
    #Field字段
    #就是類似于產(chǎn)生一個(gè)類似字典格式的數(shù)據(jù)擁有字典的一些屬性
    #字段默認(rèn)為空
    #我們可以通過實(shí)例化像著鍵賦值但是如果沒有寫這個(gè)鍵就不能賦值但是字典可以
    text = scrapy. Field()
    author = scrapy.Fie1d()
    tags = scrapy . Fie1d()

ltem支持字典接口,因此Tutorialltem在使用上和Python字典類似。

對(duì)字段進(jìn)行賦值時(shí),Tutorialltem內(nèi)部會(huì)對(duì)字段名進(jìn)行檢測(cè),如果賦值一個(gè)沒有定義的字段,就會(huì)拋出異常(防止因用戶粗心而導(dǎo)致錯(cuò)誤)

scrapy.Request

Request和Response 對(duì)象,用于爬網(wǎng)網(wǎng)站。 Request對(duì)象用來描述一個(gè)HTTP請(qǐng)求,下面是其構(gòu)造器方法的參數(shù)列表:

Request(url,ca11back=None,method='GET', headers=None,body=None,
        cookies=None,meta=None,encoding='utf-8 ',priority=O,
        dont_filter=False,errback=None,flags=None,cb_kwargs=None)
  • url(字符串) -此請(qǐng)求的URL
  • callback (callable)-將以請(qǐng)求的響應(yīng)(一旦下載)作為第一個(gè)參數(shù)調(diào)用的函數(shù)。有關(guān)更多信息,請(qǐng)參見下面的將其他數(shù)據(jù)傳遞給回調(diào)函數(shù)。如果"請(qǐng)求'未指定回調(diào),parse()則將使用"Spider"方法。請(qǐng)注意,如果在處理過程中引發(fā)異常,則會(huì)調(diào)用errback.
  • method(字符串)-此請(qǐng)求的HTTP方法。默認(rèn)為‘GET'。
  • meta (dict) - Request.meta屬性的初始值。如果給出,則在此參數(shù)中傳遞的字典將被淺表復(fù)制。
  • headers (dict)-請(qǐng)求頭。dict值可以是字符串(對(duì)于單值標(biāo)頭)或列表(對(duì)于多值標(biāo)頭)。如果None作為值傳遞,則將根本不發(fā)送HTTP標(biāo)頭。
c1ass Quotesspider(scrapy.spider):
    name = 'quotes_3'
    allowed_domains = ['toscrape.com']
    start__ur1s = ['http://quotes.toscrape.com/']
def parse(self,response):
    quotes = response.css( '.quote ' )
    for quote in quotes:
        text = quote.css( '.text: :text ' ).get()
        author = quote.css( '.author : :text ' ).get()
        tags = quote.css( '.tag : :text ' ). geta11()
        yield Qd01QuotesItem(text=text,author=author,tags=tags)
    next_page = response.css( '.next a: :attr(href) ' ).get()
    if next_page:
        next__ur1 = 'http: //quotes.toscrape.com' + next_page
        yield scrapy. Request(next_url, cal7back=self.parse)

到此這篇關(guān)于Python中scrapy框架的ltem和scrapy.Request詳解的文章就介紹到這了,更多相關(guān)scrapy框架的ltem、scrapy.Request內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    這篇文章主要介紹了在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • springboot vue 跨域問題的解決

    springboot vue 跨域問題的解決

    這篇文章主要介紹了springboot vue 跨域問題的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Java中正則表達(dá)式split()特殊符號(hào)使用詳解

    Java中正則表達(dá)式split()特殊符號(hào)使用詳解

    這篇文章主要介紹了Java中正則表達(dá)式split()特殊符號(hào)使用詳解, 文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 如何在Java中使用標(biāo)準(zhǔn)庫(kù)創(chuàng)建臨時(shí)文件

    如何在Java中使用標(biāo)準(zhǔn)庫(kù)創(chuàng)建臨時(shí)文件

    有時(shí)候我們程序運(yùn)行時(shí)需要產(chǎn)生中間文件,但是這些文件只是臨時(shí)用途,并不做長(zhǎng)久保存,我們可以使用臨時(shí)文件,不需要長(zhǎng)久保存,這篇文章主要給大家介紹了關(guān)于如何在Java中使用標(biāo)準(zhǔn)庫(kù)創(chuàng)建臨時(shí)文件的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 淺析final,finally,finalize 的區(qū)別

    淺析final,finally,finalize 的區(qū)別

    以下是對(duì)final,finally,finalize的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • Java中兩個(gè)字符串進(jìn)行大小比較的方法

    Java中兩個(gè)字符串進(jìn)行大小比較的方法

    這篇文章主要介紹了Java中兩個(gè)字符串進(jìn)行大小比較,符串是否相等比較,只能使用equals()方法,不能使用“==”,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • SpringBoot整合Activiti工作流框架的使用

    SpringBoot整合Activiti工作流框架的使用

    本文主要介紹了SpringBoot整合Activiti工作流框架的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Kafka是什么及如何使用SpringBoot對(duì)接Kafka(最新推薦)

    Kafka是什么及如何使用SpringBoot對(duì)接Kafka(最新推薦)

    這篇文章主要介紹了Kafka是什么,以及如何使用SpringBoot對(duì)接Kafka,今天我們通過一個(gè)Demo講解了在SpringBoot中如何對(duì)接Kafka,也介紹了下關(guān)鍵類?KafkaTemplate,需要的朋友可以參考下
    2023-11-11
  • CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    這篇文章主要介紹了CentOS?7.9服務(wù)器Java部署環(huán)境配置,主要包括ftp服務(wù)器搭建過程、jdk安裝方法以及mysql安裝過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • mybatisplus+pgsql查詢bug的解決

    mybatisplus+pgsql查詢bug的解決

    本文主要介紹了mybatisplus+pgsql查詢bug的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論