一、基础知识
1. Spiders 文件夹
用于编写爬虫规则,可以在已有的___init__.py文件中编写具体的爬虫规则但是实际开发中可能有多个爬虫规则,所以建议一个爬虫规则用一个文件表示,这样便于维护和管理
2. 代码
# -*- coding: utf-8 -*- import scrapy from baidu.items import BaiduItem from scrapy.selector import Selector #自带的数据清洗模块 from scrapy.spiders import Spider class SpiderSpodersSpider(scrapy.Spider): name = 'Spider_spoders'#必须设置,而且是唯一的命名,用于运行爬虫 allowed_domains = ['baidu.com'] start_urls = ['http://baidu.com/list?cid=110', 'http://baidu.com/list?cid=110102'] #函数parse处理相应内容,函数名不能更改 def parse(self, response): sel=Selector(response)#将相应内容生成selector,用于数据的清洗 items=[] item=BaiduItem()#定义BaiduItem对象 title=sel.xpath('//div[@class="question-title"]/a/text()').extract() for i in title: items.append(i) items['TitleName']=items return item
代码说明:
(1) 属性name不能为空,是程序运行入口,如果有多个爬虫规则,那么每个规则的属性name不能重复
(2) Allowed_domains是设置允许访问的域名,如果为空,就说明对域名不做访问限制
(3) Start_urls用于设置爬取对象的URL,程序运行时会对start_urls遍历处理
(4) 类方法parse()用于处理网站的相应内容,如果爬虫引擎是Spider,方法名就不能更改
(5) 爬虫规则以类为实现单位,并继承父类Spider,Spider是Scrapy的爬虫引擎
3. spiders介绍
(1) Spider是定义如何抓取某个网站的类,包括如何执行抓取(访问URL)以及如何从页面中提取结构化数据(抓取数据)。Spider是开发者自定义的类,用于为特定的网抓取和解析页面。
(2)Spider执行周期:
- 抓取第一个URL的初始请求,然后指定一个回调函数,从请求的响应来调用回调函数,请求链接通过调用start_requests()方法,parse方法作为回调函数处理请求链接返回的请求结果
- 在回调函数中,主要解析响应内容,并将解析后的数据存储在item对象中
- 在回调函数中,通常选用选择器(beautifulsoup、lxml)解析页面内容,并将解析的数据存储在item对象中。
4 Spider的种类
(1)Scrpay.spiders.Spider:最简单的spider类,其他的类是继承该类,不提供任何的特殊功能,只提供一个默认的start_requests()方法,请求从start_urls开始,Spider发送请求,并使用函数parse处理每个响应内容。
(2)Scrapy.spiders.CrawlSpider:抓取常规网站最常用的spider,提供了一个方便机制,可通过定义一组规则来跟踪URL,适合全站数据爬取和通用的爬虫开发。除了拥有scrapy.spider.Spider全部属性之外,还有特定属性rules和parse_start_url方法