用织梦软件如何做网站,动易网站设计方案,电子商务网页设计与制作实训报告,python 自己做网站前言:
重点在读connection.py的源码,这个组件主要是用来连接的; 因为连接都无法做到,后面想更改点自定义就白扯了;
正文:
翻译版的connection.py源码:
import sys
import six
from scrapy.utils.misc import load_object
from . import defaults# 快捷方式映射 设置名称 - 因为连接都无法做到,后面想更改点自定义就白扯了;
正文:
翻译版的connection.py源码:
import sys
import six
from scrapy.utils.misc import load_object
from . import defaults# 快捷方式映射 设置名称 - 参数名称
SETTINGS_PARAMS_MAP {REDIS_URL: url,REDIS_HOST: host,REDIS_PORT: port,REDIS_DB: db,REDIS_ENCODING: encoding,
}if sys.version_info (3,):SETTINGS_PARAMS_MAP[REDIS_DECODE_RESPONSES] decode_responsesdef get_redis_from_settings(settings):从给定的Scrapy设置对象返回一个redis客户端实例。此函数使用get_client来实例化客户端并使用defaults.REDIS_PARAMS作为参数的默认值。您可以使用REDIS_PARAMS设置来覆盖它们。参数----------settings : Settings一个Scrapy设置对象。参见下面支持的设置。返回-------serverRedis客户端实例。其他参数----------------REDIS_URL : str, 可选服务器连接URL。REDIS_HOST : str, 可选服务器主机。REDIS_PORT : str, 可选服务器端口。REDIS_DB : int, 可选服务器数据库。REDIS_ENCODING : str, 可选数据编码。REDIS_PARAMS : dict, 可选其他客户端参数。Python 3 Only----------------REDIS_DECODE_RESPONSES : bool, 可选设置decode_responses kwarg在Redis cls的构造函数中。params defaults.REDIS_PARAMS.copy()params.update(settings.getdict(REDIS_PARAMS))# XXX: Deprecate REDIS_* settings.for source, dest in SETTINGS_PARAMS_MAP.items():val settings.get(source)if val:params[dest] val# 允许 redis_cls 是一个类的路径。if isinstance(params.get(redis_cls), six.string_types):params[redis_cls] load_object(params[redis_cls])return get_redis(**params)# 向后兼容的别名。
from_settings get_redis_from_settingsdef get_redis(**kwargs):返回一个redis客户端实例。参数----------redis_cls : class, 可选默认值为 redis.StrictRedis。url : str, 可选如果给定将使用redis_cls.from_url来实例化该类。**kwargs要传递给redis_cls类的额外参数。返回-------serverRedis客户端实例。redis_cls kwargs.pop(redis_cls, defaults.REDIS_CLS)url kwargs.pop(url, None)if url:return redis_cls.from_url(url, **kwargs)else:return redis_cls(**kwargs)介绍
该模块包含两个主要的函数
get_redis_from_settings(settings) 该函数从Scrapy的设置对象中获取Redis客户端实例。它使用get_client来实例化客户端并使用默认参数值 defaults.REDIS_PARAMS。您可以通过设置REDIS_PARAMS来覆盖这些默认值。此函数允许您通过设置Scrapy的设置来轻松配置和创建Redis连接。get_redis(**kwargs) 该函数返回一个Redis客户端实例。它使用提供的参数来初始化实例。如果提供了url参数则通过redis_cls.from_url方法来实例化类。否则它使用提供的参数来构造Redis客户端实例。
-------这些函数的目的是为了在Scrapy中与Redis服务器进行交互例如在分布式爬虫中使用Redis作为任务队列、存储爬取的数据等;
案例:
1. 创建一个Scrapy项目: scrapy startproject myproject
cd myproject 2. 在Scrapy项目的根目录下创建一个新的Spider并将Redis相关的配置添加到Scrapy的设置文件中settings.py: # 启用Scrapy-Redis插件
SCHEDULER scrapy_redis.scheduler.Scheduler
DUPEFILTER_CLASS scrapy_redis.dupefilter.RFPDupeFilter# 指定Redis连接信息
REDIS_URL redis://127.0.0.1:6379 3. 创建一个Spider使用Redis进行分布式爬取: import scrapy
from scrapy_redis.spiders import RedisSpiderclass MySpider(RedisSpider):name myspiderredis_key myspider:start_urls #这里面的值随便你定义#例如,你写成:s:B --在redis同链接下,输入:lpush s:B https://wangzhi.com一样能跑def parse(self, response):# 处理爬取到的数据# ...yield scrapy.Request(url, callbackself.parse) 在这个例子中我们先继承RedisSpider类来创建我们的Spider。redis_key属性指定了初始URL在Redis中的键。Scrapy-Redis插件会自动从该键读取URL并且使用parse方法进行爬取和解析。
4. 在Scrapy项目的主文件main.py中导入并使用get_redis_from_settings函数来获取Redis连接实例:
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy_redis import get_redis_from_settingsfrom myproject.myspider import MySpider# 获取Redis连接实例
settings scrapy.settings.Settings()
redis_conn get_redis_from_settings(settings)# 创建CrawlerProcess
process CrawlerProcess(settings)
process.crawl(MySpider, redis_connredis_conn)
process.start()
通过使用get_redis_from_settings函数我们从Scrapy的设置对象中获取Redis连接实例。然后我们可以将该连接实例传递给我们的Spider并使用redis_conn参数进行配置。最后我们使用CrawlerProcess来创建和启动爬虫进程。 总结:
一般来说,这么操作一番下来! 你丢个起始url进去,项目能跑了,就是连接成功了! 项目跑不了,就是没连接成功,那你就对着源码好好检查一下子!