scrapy简单爬虫(一)

本文介绍如何使用Scrapy创建并启动一个爬虫项目,详细解释了项目创建过程及配置文件的各项参数含义,包括爬虫的识别名称、允许的域名、起始URL以及解析方法等。

在terminal中

1.To create scrapy project : scrapy startproject ITcast

2. cd the path of  folder  spider , and input the command scrapy genspider itcast " itcast.cn"

(1)name = 'itcast': 爬虫识别名称,必须唯一
(2)allowed_domains = ['itcast.cn'] :  
搜索的域名范围,爬虫的约束区域,爬虫只爬取这个域名下的网页,不存在的URL会被呼略
(3)start_urls = ['http://itcast.cn/']: 
爬取的URL元祖列表,爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始,
其他子url将会从这些起始URL中继承性生成

    (4)def parse(self, response):解析的方法,每个初始url完成下载后将被调用,调用的时候传入每一个URL传回的Response对象来作为唯一参数,主要作用如下:

           负责解析返回的网页数据(response.body),提取结构化数据(生成item)

            生成需要下一页的URL请求

当python版本为python2.x时候,需要添加

import sys

reload(sys)

sys.setdefaultencoding("utf-8")


### Scrapy 分布式爬虫简单案例教程 #### 1. 环境准备 为了构建简单Scrapy分布式爬虫,需要安装必要的依赖库。以下是所需的主要工具及其作用: - **Scrapy**: Python的高效爬虫框架。 - **Redis**: 数据存储和消息队列服务,用于共享待爬取URL队列以及去重功能。 可以通过以下命令安装所需的Python包[^1]: ```bash pip install scrapy redis scrapy-redis ``` #### 2. 创建Scrapy项目 创建个新的Scrapy项目,并初始化基础结构: ```bash scrapy startproject distributed_crawler cd distributed_crawler ``` #### 3. 配置`settings.py` 编辑项目的配置文件 `settings.py`,启用 Redis 支持的功能模块: ```python # 启用调度器持久化 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 去重过滤器设置为 Redis 实现 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 设置 Redis 连接参数 (可根据实际情况修改) REDIS_URL = 'redis://localhost:6379' # 是否保持任务队列不被清理 SCHEDULER_PERSIST = True # 默认请求序列化方法 SCHEDULER_SERIALIZER = "scrapy_redis.serializers.pickle" ``` 以上配置使得多个爬虫实例可以从同 Redis 队列中读取 URL 并执行抓取操作[^4]。 #### 4. 编写爬虫代码 定义简单的 Spider 类来演示如何从目标网站提取数据。假设我们要爬取些文章链接作为例子: ```python import scrapy from scrapy_redis.spiders import RedisSpider class ExampleSpider(RedisSpider): name = 'example_spider' allowed_domains = ['example.com'] # 使用 Redis 中的任务队列代替固定的起始 URL 列表 def parse(self, response): title = response.css('h1::text').get() yield {'title': title} next_pages = response.css('a::attr(href)').extract() for url in next_pages: yield scrapy.Request(url=url, callback=self.parse) ``` 此 Spider 继承自 `RedisSpider`,它会自动从 Redis 的键空间里拉取初始 URL 来源而不是硬编码在程序内部[^3]。 #### 5. 启动多个爬虫节点 确保本地已运行了个 Redis 服务之后,在不同终端窗口分别启动若干个爬虫进程: ```bash # 第爬虫节点 scrapy crawl example_spider -s REDIS_START_URLS_KEY=example:start_urls # 另外开启更多节点... ``` 这里 `-s REDIS_START_URLS_KEY` 参数指定了 Redis 键名用来加载种子 URL[^2]。 #### 6. 结果收集与分析 所有爬虫产生的结果都会按照设定好的管道机制保存下来或者发送给下游系统进步加工处理。 --- ### 注意事项 - 如果计划部署到生产环境,则需考虑增加错误恢复逻辑、负载均衡策略等方面的内容。 - 对于高并发场景下的性能调优可能还需要调整 Redis 和网络 IO 方面的相关参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值