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

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

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

scrapy框架之增量式爬蟲

一 、增量式爬蟲

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

二 、增量式爬蟲

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

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

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

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

相關(guān)文章

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

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

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

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

    CART算法是一種樹構(gòu)建算法,既可以用于分類任務(wù),又可以用于回歸,本文僅討論基本的CART分類決策樹構(gòu)建,不討論回歸樹和剪枝等問題,感興趣的朋友跟隨小編一起看看吧
    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)化代碼的可讀性,了解如何正確使用注釋可以提高代碼的可維護(hù)性和可理解性
    2023-09-09
  • Matplotlib自定義坐標(biāo)軸刻度的實現(xiàn)示例

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

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

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

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

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

    自動微分模塊Autograd為張量增加了自動求導(dǎo)功能,是神經(jīng)網(wǎng)絡(luò)訓(xùn)練不可或缺的組成部分,通過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]為基準(zhǔn)對數(shù)組進(jìn)行一個劃分,比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)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論

周至县| 沁水县| 勐海县| 浏阳市| 普兰店市| 斗六市| 西充县| 马山县| 青州市| 深水埗区| 洪江市| 虹口区| 河津市| 新沂市| 太仓市| 库车县| 磐石市| 安图县| 扎鲁特旗| 营口市| 施甸县| 延吉市| 楚雄市| 鄢陵县| 曲阜市| 郧西县| 西林县| 万州区| 梓潼县| 临江市| 六盘水市| 庄浪县| 仲巴县| 澎湖县| 花莲市| 会理县| 鄂温| 辽阳县| 会同县| 华池县| 自贡市|