5.spiders(文件夹)

一、基础知识

  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执行周期:

  1. 抓取第一个URL的初始请求,然后指定一个回调函数,从请求的响应来调用回调函数,请求链接通过调用start_requests()方法,parse方法作为回调函数处理请求链接返回的请求结果
  2. 在回调函数中,主要解析响应内容,并将解析后的数据存储在item对象中
  3. 在回调函数中,通常选用选择器(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方法

posted @ 2019-03-24 10:33  凉生暖至  阅读(274)  评论(0编辑  收藏  举报