Python爬蟲之scrapy的日誌資訊與配置

2021-10-09 19:20:36 字數 3536 閱讀 5858

學習目標:

了解 scrapy的日誌資訊

掌握 scrapy的常用配置

掌握 scrapy_redis配置

了解scrapy_splash配置

了解scrapy_redis和scrapy_splash配合使用的配置

user_agent 設定ua

default_request_headers 設定預設請求頭,這裡加入了user_agent將不起作用

item_pipelines 管道,左位置右權重:權重值越小,越優先執行

spider_middlewares 爬蟲中介軟體,設定過程和管道相同

cookies_enabled 預設為true表示開啟cookie傳遞功能,即每次請求帶上前一次的cookie,做狀態保持

cookies_debug 預設為false表示日誌中不顯示cookie的傳遞過程

log_level 預設為debug,控制日誌的等級

log_file 設定log日誌檔案的儲存路徑,如果設定該引數,日誌資訊將寫入檔案,終端將不再顯示,且受到log_level日誌等級的限制

5.1 原理

5.2 重寫dupefilter去重類,並在settings.py中使用

5.2.1 重寫去重類

from __future__ import absolute_import

from copy import deepcopy

from scrapy.utils.request import request_fingerprint

from scrapy.utils.url import canonicalize_url

from scrapy_splash.utils import dict_hash

from scrapy_redis.dupefilter import rfpdupefilter

def splash_request_fingerprint(request, include_headers=none):

""" request fingerprint which takes 'splash' meta key into account """

fp = request_fingerprint(request, include_headers=include_headers)

if 'splash' not in request.meta:

return fp

splash_options = deepcopy(request.meta['splash'])

args = splash_options.setdefault('args', {})

if 'url' in args:

args['url'] = canonicalize_url(args['url'], keep_fragments=true)

return dict_hash(splash_options, fp)

class splashawaredupefilter(rfpdupefilter):

"""dupefilter that takes 'splash' meta key in account.

it should be used with splashmiddleware.

"""def request_fingerprint(self, request):

return splash_request_fingerprint(request)

"""以上為重寫的去重類,下邊為爬蟲**"""

# 分布式的起始的url不能使用splash服務!

# 需要重寫dupefilter去重類!

def parse(self, response):

yield splashrequest('',

callback=self.parse_splash,

args=, # 最大超時時間,單位:秒

endpoint='render.html') # 使用splash服務的固定引數

def parse_splash(self, response):

with open('splash_and_redis.html', 'w') as f:

f.write(response.body.decode())

5.2.2 scrapy_redis和scrapy_splash配合使用的配置
# 渲染服務的url

splash_url = ''

**********_middlewares =

# 使用splash的http快取

# 去重過濾器

# dupefilter_class = 'scrapy_splash.splashawaredupefilter'

# dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter" # 指紋生成以及去重類

dupefilter_class = 'test_splash.spiders.splash_and_redis.splashawaredupefilter' # 混合去重類的位置

scheduler = "scrapy_redis.scheduler.scheduler" # 排程器類

scheduler_persist = true # 持久化請求佇列和指紋集合, scrapy_redis和scrapy_splash混用使用splash的dupefilter!

item_pipelines = # 資料存入redis的管道

redis_url = "redis:" # redis的url

注意:了解scrapy的日誌資訊

掌握scrapy的常用配置

掌握scrapy_redis配置

了解scrapy_splash配置

了解scrapy_redis和scrapy_splash配合使用的配置

Python之scrapy框架爬蟲

scrapy命令詳解 可能是如今最全最簡單的scrapy命令解釋 明天上班,又要爬 現在每天做的工作有50 的時間爬 40 的時間清理資料,10 寫報告。若想自學資料分析,側重點很重要,我當初把大部分經歷放在了python的pandas numpymatplotlib上面,其他時間一部分放在sql身...

python爬蟲框架之Scrapy

scrapy 是乙個爬蟲框架,提取結構性的資料。其可以應用在資料探勘,資訊處理等方面。提供了許多的爬蟲的基類,幫我們更簡便使用爬蟲。基於twisted 準備步驟 首先安裝依賴庫twisted 在這個 下面去尋找符合你的python版本和系統版本的twisted pip install 依賴庫的路徑 ...

python爬蟲scrapy之rules的基本使用

link extractors 是那些目的僅僅是從網頁 scrapy.http.response物件 中抽取最終將會被follow鏈結的物件 scrapy預設提供2種可用的 link extractor,但你通過實現乙個簡單的介面建立自己定製的link extractor來滿足需求 每個linkex...