【Scrapy】Scrapy学习(二)——基本概念

一. 命令行工具
● 帮助命令
关于命令的帮助    scrapy <command> -h
所有可用的命令    scrapy -h
● 命令分类
全局命令:startproject, settings, runspider,  shell, fetch, view, version
工程相关的命令: crawl, check, list, edit, parse, genspider, deploy,bench
● 具体命令说明
○ startproject:   scrapy startproject <project_name>  创建新的scrapy工程
○ genspider:   scrapy genspider [-t template] <name> <domain>  在当前工程中创建新的爬虫
○ crawl:    scrapy crawl <spider>  用爬虫开始抓取
○ check: scrapy check [-l] <spider>  对比检测
○ list: scrapy list  列出当前工程中可用的爬虫
○ edit: scrapy edit  用EDITOR设置中的编辑器编辑爬虫
○ fetch: scrapy fetch <url>  用scrapy下载器下载指定url,将结果写到标准输出
○ view: scrapy view <url>  以scrapy爬虫可以读取的方式打开url
○ shell: scrapy shell <url> 启动scrapy shell
○ parse: scrapy parse <url> [options]  获取并解析指定url的内容,支持的options有:
◎ --spider=SPIDER  强制使用指定爬虫解析
◎ --a name=value  设置爬虫参数,可以重复
◎ --callback或-c  用spider函数作为回调来解析返回结果
◎ --pipelines  通过pipelines处理抓取条目
◎ --rules或-r  用爬虫规则找对应的回调来解析返回结果
◎ --noitems  不显示抓取条目
◎ --nolinks  不显示提取的链接
◎ --depth或-d  请求循环深度
◎ --verbose或-v  显示每个深度的信息
○ settings: scrapy settings [options]  获取scrapy配置中的值
○ runspider: scrapy runspider <spider_file.py>  不需要创建工程,运行py文件中的爬虫。
○ version: scrapy version [-v]  打印scrapy版本,带参数-v会输出python、twisted和平台的信息。
○ deploy: scrapy deploy [ <target:project> | -l <target> | -L]  部署工程到scrapy服务器
○ bench: scrapy bench 运行基准测试程序
○ COMMANDS_MOUDLE  自定义命令
二. 条目
        爬取的目的就是从非结构的信息中获得结构化的数据,Scrapy的Item就是实现该过程的。
● 声明
import scrapy
class Product(scrapy.Item)
        name=scrapy.Field()
        ……
● 创建
>>>product= Product(name='PC')
● 获取字段值
>>>product['name']
● 设置字段值
>>>product['name']= 'App'
● 获取所有值
>>>product.items()
● 继承
class DiscountedProduct(product)
discount_percent=scrapy.Field(serializer=str)
● Item对象
scrapy.item.Item([arg])
● Field对象
scrapy.item.Field([arg])
三. 爬虫
        爬虫就是用户定义的抓取和解析指定站点的地方,一般爬虫的执行流程如下:
① 生成初始请求抓取第一个url,当获得请求结果后调用指定的回调函数。
② 在回调函数中,解析返回结果,获取Item对象或请求对象。解析得到的请求对象又包含回调方法,Scrapy循环执行上述过程。
③ 在回调中,一般用Selectors(也可用BeautifulSoup或lxml等)解析到Items。
④ 最后,爬虫返回的结果将被持久化到数据库(用Item Pipeline)或文件(用Feed exports)。
● spider参数
○ scrapy crawl myspider -a category-electronics 命令行参数
○ 构造函数中
import scrapy
class myspider(scrapy.Spider)
        name='myspider'
        def __init__(self, catagory=None, *args, **kwargs)
                super(Myspider, self).__init__(*args, **kwargs)
                ……
        下面介绍几个scrapy自带的spider:
● spider
        scrapy.sider.Spider是最简单的Spider,其他爬虫都继承它。它只请求指定的start_urls或start_requests,在返回结果时调用parse方法。包括的属性和方法有:
○ name  唯一标识
○ allowed_domains  爬取的作用域列表
○ start_urls  开始爬取的url列表
○ srart_requests  返回爬虫开始爬取的请求枚举
○ make_requests_from_url(url)  将url转化为请求
○ parse(response)  当请求没指定回调时,获得请求结果时调用的默认回调函数
○ log(message, [level, component])  用scrapy.log.msg()记录日志信息
○ closed(reason)  关闭爬虫
● CrawlSpider
        scrapy.contrib.spiders.CrawlSpider抓取普通网站最常用的爬虫,通过定义规则提供方便的跟踪链接机制。除了继承Spider的属性外,它还有一个新的属性rules,还暴露了一个可重写的方法parse_start_url(response)。
○ Crawling rules
scrapy.contrib.spiders.Rule(link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=None)
◎ link_extractor是个Link Extractor,它定义了如何从每个爬取页面中提取链接。
◎ callback在link_extractor提取链接后调用,它接收response作为参数,必须返回包含Item和/或Request对象的列表。编写爬取规则时避免使用parse作为回调函数。
【Scrapy】Scrapy学习(二)——基本概念_第1张图片

你可能感兴趣的:(【Scrapy】Scrapy学习(二)——基本概念)