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

python爬蟲scrapy框架之增量式爬蟲的示例代碼

 更新時間:2021年02月26日 14:58:11   作者:Aacheng123  
這篇文章主要介紹了python爬蟲scrapy框架之增量式爬蟲的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

scrapy框架之增量式爬蟲

一 、增量式爬蟲

什么時候使用增量式爬蟲:
增量式爬蟲:需求 當我們?yōu)g覽一些網(wǎng)站會發(fā)現(xiàn),某些網(wǎng)站定時的會在原有的基礎上更新一些新的數(shù)據(jù)。如一些電影網(wǎng)站會實時更新最近熱門的電影。那么,當我們在爬蟲的過程中遇到這些情況時,我們是不是應該定期的更新程序以爬取到更新的新數(shù)據(jù)?那么,增量式爬蟲就可以幫助我們來實現(xiàn)

二 、增量式爬蟲

概念:
通過爬蟲程序檢測某網(wǎng)站數(shù)據(jù)更新的情況,這樣就能爬取到該網(wǎng)站更新出來的數(shù)據(jù)

如何進行增量式爬取工作:
在發(fā)送請求之前判斷這個URL之前是不是爬取過
在解析內(nèi)容之后判斷該內(nèi)容之前是否爬取過
在寫入存儲介質(zhì)時判斷內(nèi)容是不是在該介質(zhì)中

增量式的核心是 去重
去重的方法:
將爬取過程中產(chǎn)生的URL進行存儲,存入到redis中的set中,當下次再爬取的時候,對在存儲的URL中的set中進行判斷,如果URL存在則不發(fā)起請求,否則 就發(fā)起請求
對爬取到的網(wǎng)站內(nèi)容進行唯一的標識,然后將該唯一標識存儲到redis的set中,當下次再爬取數(shù)據(jù)的時候,在進行持久化存儲之前,要判斷該數(shù)據(jù)的唯一標識在不在redis中的set中,如果在,則不在進行存儲,否則就存儲該內(nèi)容

三、示例

爬蟲文件

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from redis import Redis
from increment2_Pro.items import Increment2ProItem
import hashlib
class QiubaiSpider(CrawlSpider):
  name = 'qiubai'
  # allowed_domains = ['www.xxx.com']
  start_urls = ['https://www.qiushibaike.com/text/']

  rules = (
    Rule(LinkExtractor(allow=r'/text/page/\d+/'), callback='parse_item', follow=True),
  )

  def parse_item(self, response):

    div_list = response.xpath('//div[@class="article block untagged mb15 typs_hot"]')
    conn = Redis(host='127.0.0.1',port=6379)
    for div in div_list:
      item = Increment2ProItem()
      item['content'] = div.xpath('.//div[@class="content"]/span//text()').extract()
      item['content'] = ''.join(item['content'])
      item['author'] = div.xpath('./div/a[2]/h2/text() | ./div[1]/span[2]/h2/text()').extract_first()
      
			# 將當前爬取的數(shù)據(jù)做哈希唯一標識(數(shù)據(jù)指紋)
      sourse = item['content']+item['author']
      hashvalue = hashlib.sha256(sourse.encode()).hexdigest()

      ex = conn.sadd('qiubai_hash',hashvalue)
      if ex == 1:
        yield item
      else:
        print('沒有可更新的數(shù)據(jù)可爬取')


    # item = {}
    #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
    #item['name'] = response.xpath('//div[@id="name"]').get()
    #item['description'] = response.xpath('//div[@id="description"]').get()
    # return item

管道文件(管道文件也可以不用加)

from redis import Redis
class Increment2ProPipeline(object):
  conn = None
  def open_spider(self,spider):
    self.conn = Redis(host='127.0.0.1',port=6379)
  def process_item(self, item, spider):
    dic = {
      'author':item['author'],
      'content':item['content']
    }
    self.conn.lpush('qiubaiData',dic)
    print('爬取到一條數(shù)據(jù),正在入庫......')
    return item

到此這篇關于python爬蟲之scrapy框架之增量式爬蟲的示例代碼的文章就介紹到這了,更多相關scrapy增量式爬蟲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • PyQt5的PyQtGraph實踐系列3之實時數(shù)據(jù)更新繪制圖形

    PyQt5的PyQtGraph實踐系列3之實時數(shù)據(jù)更新繪制圖形

    這篇文章主要介紹了PyQt5的PyQtGraph實踐系列3之實時數(shù)據(jù)更新繪制圖形,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Python實現(xiàn)CART決策樹算法及詳細注釋

    Python實現(xiàn)CART決策樹算法及詳細注釋

    CART算法是一種樹構建算法,既可以用于分類任務,又可以用于回歸,本文僅討論基本的CART分類決策樹構建,不討論回歸樹和剪枝等問題,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • 解決Numpy報錯:ImportError: numpy.core.multiarray failed

    解決Numpy報錯:ImportError: numpy.core.multiarray faile

    這篇文章主要介紹了解決Numpy報錯:ImportError: numpy.core.multiarray failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Python 注釋:解釋和優(yōu)化代碼可讀性

    Python 注釋:解釋和優(yōu)化代碼可讀性

    本文將探討Python中注釋的重要性,以及如何通過注釋解釋和優(yōu)化代碼的可讀性,了解如何正確使用注釋可以提高代碼的可維護性和可理解性
    2023-09-09
  • Matplotlib自定義坐標軸刻度的實現(xiàn)示例

    Matplotlib自定義坐標軸刻度的實現(xiàn)示例

    這篇文章主要介紹了Matplotlib自定義坐標軸刻度的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 使用python腳本檢查ssl證書到期時間

    使用python腳本檢查ssl證書到期時間

    這篇文章主要為大家介紹了使用python腳本檢查ssl證書到期時間,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • PyTorch使用自動微分模塊的方法和理解

    PyTorch使用自動微分模塊的方法和理解

    自動微分模塊Autograd為張量增加了自動求導功能,是神經(jīng)網(wǎng)絡訓練不可或缺的組成部分,通過backward方法和grad屬性,實現(xiàn)梯度的計算和訪問,本小節(jié)主要講解了 PyTorch 中非常重要的自動微分模塊的使用和理解,感興趣的朋友一起看看吧
    2024-09-09
  • python 算法 排序?qū)崿F(xiàn)快速排序

    python 算法 排序?qū)崿F(xiàn)快速排序

    主要分為兩個子算法,PARTITION(A, p, r)以A[r]為基準對數(shù)組進行一個劃分,比A[r]小的放在左邊,比A[r]大的放在右邊
    2012-06-06
  • 解決plt.savefig()和plt.show()方法得到的圖片不一樣問題

    解決plt.savefig()和plt.show()方法得到的圖片不一樣問題

    這篇文章主要介紹了解決plt.savefig()和plt.show()方法得到的圖片不一樣問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 妙用itchat! python實現(xiàn)久坐提醒功能

    妙用itchat! python實現(xiàn)久坐提醒功能

    python編寫的久坐提醒,給最愛的那個她,這篇文章主要為大家分享了python久坐提醒功能的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

沙湾县| 嘉定区| 怀仁县| 禹城市| 塔城市| 昌乐县| 宜君县| 长春市| 久治县| 龙井市| 浠水县| 府谷县| 乐东| 德庆县| 辰溪县| 永德县| 右玉县| 海晏县| 辽中县| 常德市| 陕西省| 荣成市| 西平县| 大悟县| 婺源县| 荆州市| 卢湾区| 教育| 水富县| 宜州市| 通许县| 贵溪市| 通道| 安龙县| 蓬莱市| 平阳县| 手游| 恩平市| 绥芬河市| 平山县| 南通市|