Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例

Posted 江苏银行融创智库大数据应用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例相关的知识,希望对你有一定的参考价值。

一、Scrapy简介

       Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下:

     ● 引擎(Scrapy Engine)

     用来处理整个系统的数据流处理,触发事务。
     ● 调度器(Scheduler)

     用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
     ● 下载器(Downloader)

     用于下载网页内容,并将网页内容返回给蜘蛛。
     ● 蜘蛛(Spiders)

     蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item

     (即获取到  的 item)或额外跟进的URL的类。每个spider负责处理一个特定(或一些)网站。
     ● 项目管道(Item Pipeline)

     负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,

     将被发送到项目管道,并经过几个特定的次序处理数据。
     ● 下载器中间件(Downloader Middlewares)

     位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
     ● 蜘蛛中间件(Spider Middlewares)

     介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
     ● 调度中间件(Scheduler Middlewares)

     介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

 

    Scrapy运行流程大概如下:

  1. 引擎从调度器中取出一个链接(URL)用于接下来的抓取

  2. 引擎把URL封装成一个请求(Request)传给下载器

  3. 下载器把资源下载下来,并封装成应答包(Response)

  4. 爬虫解析Response

  5. 解析出实体(Item),则交给实体管道进行进一步的处理

  6. 解析出的是链接(URL),则把URL交给调度器等待抓取

二、Eclipse+pydev环境搭建

    1、Eclipse安装需要Java环境,如果还没有安装Java环境的请先去下载安装JDK,我用的是jdk-7u25-windows-x64.exe,配置环境变量:

         JAVA_HOME:C:\Program Files\Java\jdk1.7.0_25

         CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

         PATH:增加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    2、官网下载适合自己操作系统的Eclipse    http://www.eclipse.org/downloads/,运行安装

    3、官网下载https://www.python.org/downloads/   python-3.6.1-amd64.exe,运行安装

    4、Eclipse开发Python程序需要安装pydev:

         (1)在线安装:

         打开Eclipse,选择【Help】-【Install New Software】,在弹出的对话框中,点击Add按钮,添加新的安装源:

Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例

       在Location处填写安装源的网址(http://pydev.org/updates),并为之取一个名字填写在Name处,比如我这里写的是PyDev。

       把【connect all update sites during install to find required software】的勾选去掉,否则在安装新插件时会联网寻找所有可能的更新站点搜索,导致安装时间不可预估,并可能导致安装失败。

       确定后可以看到一个Pending过程,然后得到如下图所示的插件:

Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例

      勾选后,点击Next进行安装。

      (2)离线安装

       https://sourceforge.net/projects/pydev/files/pydev/直接下载的离线包解压,得到plugins和features文件夹,放到Eclipse的dropins目录下。重启Eclipse,PyDev插件即可安装成功。

      (3)配置pydev

       安装好PyDev插件后,还并不能正常使用,还需要配置Python的解释器。打开Eclipse,选择【Window】-【Preferences】,找到【PyDev】,选择其中的【Interpreter – Python】。点击【New】,添加一个系统里已有的Python解释器的位置。确定后会经过短暂的处理,得到它的Libraries、Buildins等。

三、Scrapy环境搭建

      1、下载依赖包: http://download.csdn.net/detail/u011781521/9815204

      2、安装依赖包:进入cmd命令行模式,切换到依赖包所在目录,运行以下命令

             pip install lxml-3.7.3-cp36-cp36m-win_amd64.whl

             pip install zope.interface-4.3.3-cp36-cp36m-win_amd64.whl
             pip install pywin32-221-cp36-cp36m-win_amd64.whl
             pip install Twisted-17.1.0-cp36-cp36m-win_amd64.whl
             pip install pyOpenSSL

      3、验证Scrapy依赖项是否安装成功的方法:进入cmd命令行模式,输入python,进入python开发模式,执行以下命令:

              执行import lxml,如果没报错,则说明lxml安装成功。
              执行import twisted,如果没报错,则说明twisted安装成功。
              执行import OpenSSL,如果没报错,则说明OpenSSL安装成功。
              执行import zope.interface,如果没报错,则说明zope.interface安装成功。

      4、安装Scrapy:cmd命令行模式,执行pip install Scrapy

         注意:这里要看版本的兼容性,Scrapy1.3、1.4等和Twisted-17兼容,Scrapy1.1和 Twisted-16兼容,不然会一直报错,这里我调试了一天。

      5、cmd命令行模式执行pip list可以查看所有安装包的版本。

       以上所有需准备的开发环境就完成了,下面就可以进入开发阶段。

四、简单实例:爬美剧天堂前100最新http://www.meijutt.com/new100.html

      1、在Eclipse新建一个PyDev Project项目

       2、cmd命令行下执行以下命令创建工程:

          scrapy startproject movie

   3、进入到movie目录下执行以下命令创建爬虫程序

      cd movie

       scrapy genspider meiju meijutt.com

   4、将movie下所有内容拷到第一步新建的PyDev Project目录下,在Eclipse刷新,结构如下图:

     Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例

  • scrapy.cfg  项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)

  • items.py    设置数据存储模板,用于结构化数据,如:Django的Model

  • pipelines    数据处理行为,如:一般结构化的数据持久化

  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等

  • spiders      爬虫目录,如:创建文件,编写爬虫规则

注意:一般创建爬虫文件时,以网站域名命名

      5、设置数据存储模板:items.py

    import scrapy

    class MovieItem(scrapy.Item):

       # define the fields for your item here like:

       # name = scrapy.Field()

         name = scrapy.Field()

   6、编写爬虫:meiju.py

    # -*- coding: utf-8 -*-

    import scrapy

    from movie.items import MovieItem

    class MeijuSpider(scrapy.Spider):

        name = "meiju"

        allowed_domains = ["meijutt.com"]

        start_urls = ['http://www.meijutt.com/new100.html']

 

        def parse(self, response):

             movies = response.xpath('//ul[@class="top-list  fn-clear"]/li')

             for each_movie in movies:

                item = MovieItem()

                item['name'] = each_movie.xpath('./h5/a/@title').extract()[0]

                yield item

    7、设置配置文件:settings.py修改ITEM_PIPELINES 为如下内容

        ITEM_PIPELINES = {'movie.pipelines.MoviePipeline':100}

    8、编写数据处理脚本:pipelines.py

        class MoviePipeline(object):

           def process_item(self, item, spider):

               with open("my_meiju.txt",'a') as fp:

               fp.write(item['name'].encode("utf8") + '\n')

    9、执行爬虫:

      (1)在movies目录下新建cmdline.py,编写以下内容

           import scrapy.cmdline

           if __name__ == '__main__':
              scrapy.cmdline.execute(argv=['scrapy','crawl','meiju'])

      (2)运行配置:Eclipse-Run-Run configuration,如图


   (3)点击Run,开始爬虫,结果如下图:

   

以上是关于Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例的主要内容,如果未能解决你的问题,请参考以下文章

win7&64位&python3.6 如何安装stanfordcorenlp

win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visua

win10安装最新的python3解释器

如何查看eclipse是32位还是64位

怎样查看eclipse是32位还是64位

怎样查看eclipse是32位还是64位