爬虫框架 scrapy 的简单介绍 以及 安装和简单使用

scrapy是什么?

        它是Python的一个爬虫框架,非常出名、非常强悍,因为是框架,所以需要学习的就是框架的用法,当然,它的底层肯定使用了多进程、多线程、队列等技术。

        scrapy框架由五部分组成,包括:引擎、下载器、spiders、调度器(schedule)、管道(pipeline),一般我们进行爬虫实现的代码写到spiders、管道中,在spiders里面我们可以实现文件内容解析、链接提取等,在管道中,可以实现选择我们的数据是保存到文件中还是数据库(mysql、MongoDB)中。

scrapy框架的安装

在终端输入:pip install scrapy即可完成安装。

如果安装过程中出现如下错误:

building 'twisted.test.raiser' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案如下:
下载twisted对应版本的whl文件(如我的Twisted-17.9.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,在终端运行如下命令即可安装,注意python版本必须是64位的:

pip install C:\Users\CR\Downloads\Twisted-17.9.0-cp36-cp36m-win_amd64.whl

scrapy框架的简单使用

   (1)创建项目

            scrapy startproject myproject

如图所示:

爬虫框架 scrapy 的简单介绍 以及 安装和简单使用

   (2)认识目录结构

            myproject
                myproject           真正的项目文件
                    __pycache__      缓存文件
                    spiders          爬虫文件存放的地方
                        __pycache__
                        __init__.py
                        lala.py      爬虫文件(*)
                    __init__.py      包的标志
                    items.py         定义数据结构的地方(*)
                    middlewares.py   中间件
                    pipelines.py     管道文件(*)
                    settings.py      配置文件(*)
                scrapy.cfg           不需要管

        (3)生成爬虫文件

            cd myproject
            scrapy genspider baidu www.baidu.com
            name: 爬虫名字
            allowed_domains: 允许的域名
            start_urls: 起始url
            parse: 自动回调的解析内容函数

        (4)运行爬虫程序

                cd myproject/myproject/spiders

                scrapy crawl baidu

                在程序运行的过程中可能会出现问题可以通过以下方式进行解决:

                1、pywin32安装一***意版本
                2、取消遵从robots协议
                    settings.py中第22行
                3、修改UA头部信息

                    settings.py中第19行

        (5)存储爬虫文件

            爬取的文件可以存储为**.json,**.xml,**.csv形式,使用方法如下:
            scrapy crawl baidu -o baidu.json
            scrapy crawl baidu -o baidu.xml
            scrapy crawl baidu -o baidu.csv
            注意:当文件输出为csv的时,中间可能有空行,可以查资料进行解决