最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Item

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

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

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

在保存數據的時候可以每次初始化一個字典等格式,但是最方便,最好的保存方式就是使用Scrapy自帶的ltem數據結構了。

我們學習了從頁面中提取數據的方法,接下來學習如何封裝爬取到的數據。應該用怎樣的數據結構來維護這些零散的信息字段呢?最容易想到是使用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字典存儲一本書的信息,但字典可能有以下缺點:

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

(2缺乏對字段名字的檢測,容易因程序員的筆誤而出錯。

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

ltem和Field

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

1. ltem基類

數據結構的基類,在items.py中定義數據結構時,需要繼承自該基類。

2. Field類

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

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

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

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

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

對字段進行賦值時,Tutorialltem內部會對字段名進行檢測,如果賦值一個沒有定義的字段,就會拋出異常(防止因用戶粗心而導致錯誤)

scrapy.Request

Request和Response 對象,用于爬網網站。 Request對象用來描述一個HTTP請求,下面是其構造器方法的參數列表:

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(字符串) -此請求的URL
  • callback (callable)-將以請求的響應(一旦下載)作為第一個參數調用的函數。有關更多信息,請參見下面的將其他數據傳遞給回調函數。如果"請求'未指定回調,parse()則將使用"Spider"方法。請注意,如果在處理過程中引發(fā)異常,則會調用errback.
  • method(字符串)-此請求的HTTP方法。默認為‘GET'。
  • meta (dict) - Request.meta屬性的初始值。如果給出,則在此參數中傳遞的字典將被淺表復制。
  • headers (dict)-請求頭。dict值可以是字符串(對于單值標頭)或列表(對于多值標頭)。如果None作為值傳遞,則將根本不發(fā)送HTTP標頭。
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)

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

相關文章

  • 深入了解java.util.Arrays的使用技巧

    深入了解java.util.Arrays的使用技巧

    在這篇文章中,我們將來帶大家看看?java.util.Arrays?,我們可以使用?Arrays?創(chuàng)建,比較,排序,搜索,stream?和轉化數組,感興趣的小伙伴可以了解一下
    2023-02-02
  • springboot查詢全部部門流程分析

    springboot查詢全部部門流程分析

    本文分析了在SpringBoot框架中前端如何請求DeptController的list()方法,并通過DeptService到DeptMapper接口查詢數據庫中的全部部門信息的流程,整個過程涉及前端到后端數據的獲取和返回,是SpringBoot應用中常見的數據處理模式
    2024-10-10
  • java判斷域名無法訪問自行訪問下一條

    java判斷域名無法訪問自行訪問下一條

    這篇文章主要為大家介紹了java實現判斷域名無法訪問的時候自行訪問下一條域名示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 使用Sharding-JDBC對數據進行分片處理詳解

    使用Sharding-JDBC對數據進行分片處理詳解

    這篇文章主要介紹了使用Sharding-JDBC對數據進行分片處理詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot中@Configuration和@Bean和@Component相同點詳解

    SpringBoot中@Configuration和@Bean和@Component相同點詳解

    這篇文章主要介紹了SpringBoot中@Configuration和@Bean和@Component相同點詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • spring中EventListener的使用方式

    spring中EventListener的使用方式

    這篇文章主要介紹了spring中EventListener的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法)

    IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法)

    這篇文章主要介紹了IDEA最新激活碼2021(IDEA2020.3.2最新永久激活方法),本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Shiro:自定義Realm實現權限管理方式

    Shiro:自定義Realm實現權限管理方式

    這篇文章主要介紹了Shiro:自定義Realm實現權限管理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 一文搞懂Mybatis中Mapper配置文件獲取參數的五種方式

    一文搞懂Mybatis中Mapper配置文件獲取參數的五種方式

    這篇文章主要介紹了Mybatis中Mapper配置文件獲取參數的五種方式,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • 詳解Java的Spring框架下bean的自動裝載方式

    詳解Java的Spring框架下bean的自動裝載方式

    這篇文章主要介紹了Java的Spring框架下bean的自動裝載方式,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12

最新評論

宜川县| 乐清市| 麻栗坡县| 吴忠市| 托里县| 民勤县| 遵化市| 石景山区| 基隆市| 南华县| 虞城县| 英山县| 栾城县| 彭州市| 砀山县| 惠州市| 叶城县| 辽宁省| 正宁县| 定兴县| 海伦市| 诸城市| 晋宁县| 乌拉特前旗| 江西省| 上杭县| 大方县| 乌什县| 四子王旗| 调兵山市| 鱼台县| 兴宁市| 郧西县| 高要市| 钟祥市| 光泽县| 五大连池市| 文成县| 琼中| 东源县| 凤阳县|