网络爬虫开发常用框架

  爬虫框架就是一些爬虫项目的半成品,可以将一些爬虫常用的功能写好。然后留下一些接口,在不同的爬虫项目中,调用适合自己项目的接口,再编写少量的代码实现自己需要的功能。因为框架已经实现了爬虫常用的功能,所以为开发人员节省了很多精力与时间。

1、Scrapy爬虫框架

  这是一套比较成熟的python爬虫框架,简单轻巧,并且非常方便。可以高效率的爬取Web页面并从页面中提取结构化的数据。Scrapy是一套成熟的框架,所以在使用时不需要担心收取费用的问题。其网址为:https://scrapy.org      可以看下他们的开发文档

  源码地址:https://github.com/binux/pyspider/releases

  开发文档地址为:http://docs.pyspider.org/

2、Crawley 爬虫框架

  Crawley也是python开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。特性如下:

    基于Eventlet构建的高速网络爬虫框架

    可以将数据存储在关系型数据库中,如mysql

    可以将爬取的数据导入为Json、XML格式

    支持非关系数据跨

    支持命令行工具

    可以使用喜欢的工具进行数据的提取

    支持使用Cookie登录或访问那些只有登录才可以访问的网页

    简单易学(hope so)

  官网地址为:http://project.crawley-cloud.com

3、PySpider爬虫框架

  相对于Scrapy框架而言,PySpider框架是一支新秀。它采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器、任务监视器、项目管理器以及结果查看器。有如下特性:

  Python脚本控制,可以用任何你喜欢的html解析包

  Web界面编写调试脚本、起停脚本、监控执行状态、查看活动历史、获取结果产出

  支持RabbitMQ、Beanstalk、Redis和Kombu作为消息队列

  支持抓取JavaScript的页面

  强大的调度控制,支持超时重爬及优先级设置

  组件可替换,支持单机/分布式部署,支持Docker部署

4、Scrapy 爬虫框架的使用

(1)搭建

  01 安装Twisted模块  计算机需要有c++ 14.0的相关支持,可以我的网盘里下载

  02 安装Scrapy模块  直接安装即可

  03 安装pywin32模块  直接安装即可

(2)创建Scrapy项目

  在指定文件夹内打开命令行,输入:   scrapy startproject scrapyDemo,即可创建一个名为‘scrapyDemo’的项目 

(3)创建爬虫

  在创建爬虫时,首先需要创建一个爬虫模块的文件,该文件需要放置在spiders文件夹中。爬虫模块是用于从一个网站或多个网站中爬取数据的类,它需要继承scrapy.Spider类,下面通过一个例子,实现爬取网页后将网页的代码以html文件保存到项目文件夹当中,如下:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = 'quotes' #定义爬虫的名称

    def start_requests(self):
        #设置爬取目标的地址
        urls=[
            'https://www.juzimi.com/article/23959',
            'https://www.juzimi.com/article/23959?page=1',
            'https://www.juzimi.com/article/23959?page=2'
        ]
        #获取所有地址,有几个地址发送几次请求
        for url in urls:
            #发送网络请求
            yield scrapy.Request(url=url,callback=self.parse)

    def parse(self, response):
        #获取页数
        page=response.url.split('/')[-2]
        #根据页数设置文件名称
        filename='quotes-%s.html'%page
        #写入文件的模式打开文件,如果没有该文件将创建该文件
        with open(filename,'wb') as f:
            #向文件中写入获取的html代码
            f.write(response.body)
        #输出保存文件的名称
        self.log('Saved file %s'%filename)

 

  在运行Scrapy 所创建的爬虫项目时,需要在命令窗口中输入“scrapy crawl quotes”,其中“quotes”是自己定义的爬虫名称。

  除了使用在命令窗口中启动外,还可以在程序中启动爬虫的API,也就是CrawlerProcess类。首先需要在CrawlerProcess初始化时传入项目的settings信息,然后在crawl()方法中传入爬虫的名称,最后通过start()方法启动爬虫,代码如下:

#导入CrawlerProcess类
from scrapy.crawler import CrawlerProcess
#导入获取项目设置信息
from scrapy.utils.project import get_project_settings

#程序入口
if __name__ == '__main__':
    #创建CrawlerProcess类对象并传入项目设置信息参数
    process=CrawlerProcess(get_project_settings())
    #设置需要启动的爬虫名称
    process.crawl('quotes')
    #启动爬虫
    process.start()

 

(4)获取数据

  Scrapy爬虫框架,可以通过特定的CSS或者XPath表达式来选择HTML文件中的某一处,并且提取出相应的数据。

  1、CSS提取数据

  使用CSS提取HTML文件中的某一处数据时,可以指定HTML文件中的标签名称,示例代码如下:

response.css('title').extract()

 

posted @ 2019-02-27 11:32  余火灬  阅读(681)  评论(0编辑  收藏  举报