python 파충류 scrapy 프레임워크의 증량식 파충류 예시 코드

scrapy 프레임의 증량식 파충류

1. 증량식 파충류


증량식 파충류는 언제 사용합니까?
증량식 파충류: 우리가 일부 사이트를 방문하면 일부 사이트가 정해진 시간에 원래의 기초 위에서 새로운 데이터를 업데이트하는 것을 발견할 수 있다.예를 들어 일부 영화 사이트는 최근에 인기 있는 영화를 실시간으로 업데이트한다.그렇다면 우리가 파충류 과정에서 이런 상황을 만났을 때, 우리는 정기적으로 업데이트된 새로운 데이터를 얻기 위해 프로그램을 업데이트해야 하지 않겠는가?그러면 증량식 파충류는 우리가 실현하는 것을 도울 수 있다

2. 증량식 파충류


개념:
파충류 프로그램을 통해 모 사이트의 데이터 업데이트 상황을 검출하면, 이렇게 하면 이 사이트에서 업데이트된 데이터를 얻을 수 있다
어떻게 증량식 기어오르기 작업을 진행합니까?
요청을 보내기 전에 이 URL이 올라왔는지 아닌지를 판단합니다.
내용을 해석한 후에 이 내용을 판단하기 전에
저장 매체에 쓸 때 내용이 이 매체에 있는지 아닌지를 판단하다
증량식의 핵심은 무게를 제거하는 것이다
무거운 것을 제거하는 방법:
기어오르는 과정에서 발생하는 URL을 저장하여redis의 set에 저장하고, 다음에 다시 기어오를 때 저장된 URL의 set에 판단하며, URL이 존재하면 요청을 하지 않으며, 그렇지 않으면 요청을 시작합니다.
기어오른 사이트의 내용에 대해 유일한 표지를 한 다음에 이 유일한 표지를redis의 set에 저장한다. 다음에 다시 데이터를 찾을 때 지구화 저장을 하기 전에 이 데이터의 유일한 표지가redis에 없는 set에 있는지 판단하고 만약에 있으면 저장하지 않는다. 그렇지 않으면 이 내용을 저장한다.

예제


파충류 파일

# -*- 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()
      
			#  ( )
      sourse = item['content']+item['author']
      hashvalue = hashlib.sha256(sourse.encode()).hexdigest()

      ex = conn.sadd('qiubai_hash',hashvalue)
      if ex == 1:
        yield item
      else:
        print(' ')


    # 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(' , ......')
    return item
이python 파충류의scrapy 프레임워크의 증량식 파충류에 대한 예시 코드를 소개합니다. 더 많은 관련 scrapy 증량식 파충류 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기