3、scrapy基本概念介绍
来源:互联网 发布:手机淘宝不能追加评论 编辑:程序博客网 时间:2024/05/17 22:58
本篇介绍scrapy的命令行工具、重要组件和重要对象。
scrapy 命令行工具
- help:帮助信息(scrapy –help)
- version:版本信息,可以添加-v查看scrapy各个组件的信息(scrapy version -v)
- startproject:新建一个工程(scrapy startproject example)
- genspider:产生一个spider(scrapy genspider example example.com)
- list:查看本工程中包含的spiders
- view:在浏览器中打开网页,这个网页就是scrapy处理的网页(scrapy view http://example.com)
- parse:解析一个URL(使用对应的spider),打印结果
- shell:可交互的scrapy爬取控制台
- runspider:运行一个自包含的爬虫,即没有创建工程
- bench:基准测试
scrapy的重要组件
Spider
基本介绍
Spider是一个类,它定义了怎样爬取一个网站,包括怎样跟踪链接、怎样提取数据。
执行流程:
- 根据start_urls产生初始Requests
- 解析responce
- 使用selector
- 存储items
zaobao Spider
基类介绍(scrapy.Spider)
- 属性
- name:spider的名称,同一工程中唯一
- allowed_domains:允许的域名
- start_urls:初始urls
- custom_settings:个性化设置,覆盖全局设置(settings.py)
- crawler:抓取器,spider将绑定到它上面
- settings:配置实例,包含工程中所有的配置变量
- logger:日志实例
- 方法
- from_crawler(crawler, *args, **kwargs):类方法,用于创建spiders
- start_requests():生成初始的requests
- make_requests_from_url(url):根据url生成一个request
- parse(response):解析网页内容
- log(message[, level, component]):兼容老版本
- self.logger.info(“log内容”)
- closed(reason):当spider关闭的时候调用的方法
子类介绍
CrawlerSpider
- 最常用的spider,用于抓取普通网页
- 和基类比较增加了两个成员
- rules:定义了一些抓取规则(链接怎么跟踪、使用哪一个parse函数解析此链接)
- parse_start_url(response):解析初始url产生的response
示例
XMLFeedSpider
CSVFeedSpider
SitemapSpider
Selector
scrapy默认使用Selector作为网页解析工具
实例化
常用方法
- xpath
- css
- re
- extract
- extract_first
Item
示例
import scrapyclass Product(scrapy.Item): name = scrapy.Field() price = scrapy.Field() stock = scrapy.Field()
Item Pipeline
作用
- 清洗HTML数据
- 验证抓取到的数据(检查是否有数据)
- 检查是否重复(然后丢弃重复数据)
- 存储数据到数据库中
示例
from scrapy.exceptions import DropItemclass PricePipeline(object): vat_factor = 1.15 def process_item(self, item, spider): if item['price']: if item['price_excludes_vat']: item['price'] = item['price'] * self.vat_factor return item else: raise DropItem("Missing price in %s" % item)
激活pipeline
在settings.py
里面设置
ITEM_PIPELINES = { 'myproject.pipelines.PricePipeline': 300}
优先级0-1000,越小越优先
Feed exports
存储抓取到的数据
- json
- json lines
- csv
- xml
scrapy的重要对象
Request
- scrapy.http.Request的初始化参数
- url:必须
- callback
- method=‘GET’
- headers
- body
- cookies
- meta
- encoding=’utf-8’
- priority=0
- don’t_filter=False
- errback
- 其它属性
- url
- method
- headers
- body
- cookies
- meta
- copy()
- replace()
示例
- 子类
FormRequest实现登陆功能
class scrapy.http.FormRequest(url[, formdata…])
示例
Response
- scrapy.http.Response的初始化参数
- url:必须参数
- status=200
- headers
- body
- flags
- 其他成员
- url
- status
- headers
- body
- resquest
- meta
- flags
- copy()
- replace()
- urljoin(url)
- 子类
- scrapy.http.TextResponse(它有两个子类)
- scrapy.http.HtmlResponse
- scrapy.http.XmlResponse
0 0
- 3、scrapy基本概念介绍
- 5.基本概念介绍-scrapy的重要组件
- 4. 基本概念介绍1-scrapy命令行工具(常用)
- scrapy介绍
- Scrapy介绍
- 6.基本概念解释3-scrapy中的重要对象
- 《Learning Scrapy》1 Scrapy介绍
- Scrapy安装介绍
- Scrapy安装介绍
- Scrapy安装介绍
- Scrapy安装介绍
- Scrapy安装介绍
- Scrapy安装介绍
- Scrapy spiders介绍
- Scrapy selector介绍
- Scrapy安装介绍
- scrapy介绍和安装
- scrapy一些介绍
- JNI学习(一)hellojni
- 使用WebRTC搭建前端视频聊天室——数据通道篇
- React-Native生命周期详解
- 淘宝商品数据库设计
- WCF之分布式事务一
- 3、scrapy基本概念介绍
- iOS国际化(本地化)详解
- Opencv中的数据类型
- Codeforces 793D Presents in Bankopolis【Dp+记忆化搜索】
- spring boot application properties配置详解
- Java数据结构 HashMap 源码阅读
- 题目1087:约数的个数 九度OJ
- 【Shell】把某一文件夹下所有文件名或者路径存入TXT文档
- RabbitMQ用户角色及权限控制