1、Scrapy_redis的基础概念
2、Scrapy_redis的流程
3、复习redis的使用
4、Scrapy_redis的使用
1、 Scrapy_redis的基础概念
scrapy_redis:基于redis的组件的爬虫
github地址:https://github.com/rmax/scrapy-redis
scrapy_redis在scrapy的基础上实现了更多,更强大的功能,具体体现在:request去重(不仅仅是爬过的网页不再爬取,保存的数据也会去重),爬虫持久化,和轻松实现分布式
2、Scrapy_redis的流程
3、复习redis的使用
3.1 redis是什么
redis是一个开源的,内存数据库,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合等。
3.2 常用命令
`/etc/init.d/redis-server stop ` redis停止
`/etc/init.d/redis-server start` 启动
`/etc/init.d/redis-server restart` 重启
3.3. 远程连接redis数据库
`redis-cli -h <hostname> -p <port>` 远程连接redis数据库
3.4 redis-cli中的命令
`select 1` 切换到db1,总数据库为16个,默认为在db0
`keys *` 查看所有的redis键
`type "键"` 查看键的数据类型
`flushdb` 清空当前db
`flushall` 清空所有db
3.5 其他命令
https://www.cnblogs.com/nuochengze/p/12835560.html
http://www.redis.cn/commands.html(官方文档)
4、Scrapy_redis的使用
(1)clone github scrapy-redis源码文件
`git clone https://github.com/rolando/scrapy-redis.git`
(2)项目自带了三个demo(dmoz.py、mycrawler_redis.py、myspider_redis.py)
`my scrapy-redis/example-project`
4.1 scrapy_redis使用
4.1.1 scrapy_redis之domz
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class DmozSpider(CrawlSpider):
"""Follow categories and extract links."""
name = 'dmoz' # 爬虫的名字
allowed_domains = ['dmoz-odp.org'] # 允许的域名
start_urls = ['http://www.dmoz-odp.org/'] # 开始的url
rules = [
Rule(LinkExtractor(
# 定义了一个url的提取规则,满足的交给callback函数处理
restrict_css=('.top-cat', '.sub-cat', '.cat-item')
), callback='parse_directory', follow=True),
]
def parse_directory(self, response):
for div in response.css('.title-and-desc'):
yield { # 将提取的数据yield给engine
'name': div.css('.site-title::text').extract_first(),
'description': div.css('.site-descr::text').extract_first().strip(),
'link': div.css('a::attr(href)').extract_first(),
}
# domz的部分与和我们自己写的crawlspider没有任何区别