激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python自定義scrapy中間模塊避免重復(fù)采集的方法

Python自定義scrapy中間模塊避免重復(fù)采集的方法

2020-05-31 10:47pythoner Python

這篇文章主要介紹了Python自定義scrapy中間模塊避免重復(fù)采集的方法,實例分析了Python實現(xiàn)采集的技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了Python自定義scrapy中間模塊避免重復(fù)采集的方法。分享給大家供大家參考。具體如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from scrapy import log
from scrapy.http import Request
from scrapy.item import BaseItem
from scrapy.utils.request import request_fingerprint
from myproject.items import MyItem
class IgnoreVisitedItems(object):
  """Middleware to ignore re-visiting item pages if they
  were already visited before.
  The requests to be filtered by have a meta['filter_visited']
  flag enabled and optionally define an id to use
  for identifying them, which defaults the request fingerprint,
  although you'd want to use the item id,
  if you already have it beforehand to make it more robust.
  """
  FILTER_VISITED = 'filter_visited'
  VISITED_ID = 'visited_id'
  CONTEXT_KEY = 'visited_ids'
  def process_spider_output(self, response, result, spider):
    context = getattr(spider, 'context', {})
    visited_ids = context.setdefault(self.CONTEXT_KEY, {})
    ret = []
    for x in result:
      visited = False
      if isinstance(x, Request):
        if self.FILTER_VISITED in x.meta:
          visit_id = self._visited_id(x)
          if visit_id in visited_ids:
            log.msg("Ignoring already visited: %s" % x.url,
                level=log.INFO, spider=spider)
            visited = True
      elif isinstance(x, BaseItem):
        visit_id = self._visited_id(response.request)
        if visit_id:
          visited_ids[visit_id] = True
          x['visit_id'] = visit_id
          x['visit_status'] = 'new'
      if visited:
        ret.append(MyItem(visit_id=visit_id, visit_status='old'))
      else:
        ret.append(x)
    return ret
  def _visited_id(self, request):
    return request.meta.get(self.VISITED_ID) or request_fingerprint(request)

希望本文所述對大家的Python程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠ri | 美女扒开胸罩给男生看视频 | 久久久久免费精品 | 国产精品久久久久久久久久iiiii | 欧美一级无毛 | 请播放一级毛片 | 国产 视频 一区二区 | 韩国19禁在线 | 久久人人做 | 一级黄色影院 | 久久综合综合 | 12av毛片| 99精品国产一区二区三区 | 91精品国产91热久久久做人人 | 一本色道久久综合亚洲精品图片 | 精品小视频 | 操你逼| a级毛片免费观看在线播放 日本aaa一级片 | 久久蜜桃香蕉精品一区二区三区 | 国产一区二区三区视频在线观看 | 成人444kkkk在线观看 | 亚洲第一成网站 | 91久久一区| 成人在线视频免费看 | 欧美激情第一区 | 久久久精品精品 | 在线亚洲免费 | 国产精品久久久久久久久久了 | 国产精品一区在线观看 | 亚洲精品 在线播放 | 国产亚洲精品久久久久5区 男人天堂免费 | 亚洲第一页夜 | 毛片大全免费看 | 日日做 | 精品国产一区二区三区久久久蜜月 | xxxx69hd一hd72 | 久色视频网站 | 日韩在线观看中文 | 国产精品久久久久久久不卡 | 久久成人激情视频 | 中文字幕专区高清在线观看 |