Spider
- 基本介绍:
- 概念:是一个类,它定义了怎样爬取网站,包括怎样跟踪链接、怎样提取数据;
- 循环执行流程:
1. 通过初始的url产生request
2. 解析response
3. 使用selector
4. 存储到Item
- 基类(scrapy.Spider)介绍:
- 属性:
- name:spider的名称,要求唯一;
- allowed_domains:允许的域名;
- start_urls:初始urls;
- custom_settings:个性化设置,会覆盖全局的设置;
- crawler:抓取器,spider将绑定到它上面;
- setting:配置实例,包含工程中所有的配置变量;
- logger:日志实例
- 方法:
- from_crawler(crawler, *args,**kwargs): 类方法,用于创建spiders;
- start_requests():生成初始的requests;
- make_request_from_url(url):根据url生成一个request;
- parse(response):用来解析网页内容;
- log(message[, level,component]):用来记录日志,这里请使用logger属性记录日志(该方法是为了兼容旧版本的日志模块);
eg:self.logger.info(“visted success”); - closed(reason):当spider关闭的时候调用的方法;
- 属性:
- 子类介绍:
- CrawlSpider:
- 最常用的spider,用于抓取普通的网页;
- 增加两个成员;
1)rules:定义一些抓取规则–连接怎么跟踪、使用哪一个parse函数解析此链接;
2)parse_start_url(response):解析初始化url的相应的parse;
3)实例,文档36页;
- XMLFeedSpider:解析XML文件
- CSVFeedSpider:解析CSV文件
- SitemapSpider:解析sitemap类型的页面
- CrawlSpider:
Selector
- 概念:网页内容抽取器(抽取网页内容有很多方法,比如beautifulsoup、lxml,但是scrapy里面默认使用的是selector,相对来说也是最好用的。)
实例化:(文档41页)
1.用text>>> from scrapy.selector import Selector >>> from scrapy.http import HtmlResponse >>> body = '<html><body><span>good</span></body></html>' >>>Selector(text=body).xpath('//span/text()').extract() [u'good']
2.用response
>>> response = HtmlResponse(url='http://example.com', body=body) >>>Selector(response=response).xpath('//span/text()').extract() [u'good']
常用抽取方法
- xpath
- css
- re
- extract