• 网络爬虫开发常用框架


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

    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()
  • 相关阅读:
    Redis 常用配制参数
    CentOS 7 环境下配制 Redis 服务
    Mysql ERROR 1032 (HY000): Can't find record in TABLE
    Linux下利用Shell使PHP并发采集淘宝产品
    Linux C连接Mysql
    PHP采集淘宝商品
    关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
    mac下svn无法上传.a文件的问题
    armv6, armv7, armv7s的区别
    【转】图片处理:颜色矩阵和坐标变换矩阵
  • 原文地址:https://www.cnblogs.com/start20180703/p/10442587.html
Copyright © 2020-2023  润新知