zoukankan      html  css  js  c++  java
  • Scrapy项目



           通过使Scrapy框架,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,进行数据挖掘和对web站点页面提取结构化数据,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求,使得我们的爬虫更强大、更高效。  


    一、项目分析

          豆瓣电影网页爬虫,要求使用scrapy框架爬取豆瓣电影 Top 250网页(https://movie.douban.com/top250?start=0)上所罗列上映电影的标题、主要信息、评分和电影简介等的信息,将所爬取的内容保存输出为CSV和JSON格式文件,在python程序代码中要求将所输出显示的内容进行utf-8类型编码。

    1. 网页分析

        对于本例实验,要求爬取的豆瓣电影 Top 250网页上的电影信息,显而易见,网页( https://movie.douban.com/top250?start=0)的页面布局结构可如图2-1所示: 

    clip_image002[6]

    图1-1 所要爬取的信息页面布局

    使用xpath_helper_2_0_2辅助工具,对其中上映电影的标题、主要信息、评分和电影简介等的信息内容进行xpath语法分析如下:

    标题://div[@class='info']//span[@class='title'][1]/text()

    信息://div[@class='info']//div[@class='bd']/p[@class='']/text()

    评分:.//div[@class='bd']/div[@class='star']/span[@class='rating_num']/text()

    简介://div[@class='info']//div[@class='bd']/p[@class='quote']/span/text()


    2. url分析

           获取url进行解析移交给scrapy,而对于request类,含有的参数 url 与callback回调函数为parse_details。出现搜索到的url不全,加上当前目录的url拼接,采用prase.urljoin(base,url),最后获取下一页url交给scrapy ,再用Request进行返回。

          换句话说,Spiders处理response时,提取数据并将数据经ScrapyEngine交给ItemPipeline保存,提取url重新经ScrapyEngine交给Scheduler进行下一个循环。直到无Url请求程序停止结束。



    二、项目工具

           Python 3.7.1       、 JetBrains PyCharm 2018.3.2        其它辅助工具:略


    三、项目过程

    (一)使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析,绘制如图3-1所示的程序逻辑框架图:

    clip_image002[8]

    图3-1 程序逻辑框架图

     

      (二)爬虫程序调试过程BUG描述(截图)

    clip_image002[10]

    图3-2 爬虫程序BUG描述①


    clip_image002[12]

    图3-3 爬虫程序BUG描述②


    (三)爬虫运行结果

    clip_image002[14]

    图3-4 爬虫程序输出运行结果1


    clip_image002[16]

    图3-5 爬虫程序输出文件


    四、项目心得

      关于本例实验心得可总结如下:

    1、 当Scrapy执行crawl命令报错:ModuleNotFoundError: No module named ***时,应该首先检查Project Interpreter是否为系统安装的python环境路径,如图4-1所示:

    clip_image002[18]

    图4-1 检查Project Interpreter路径

    2、 schelduler会按照一定的次序取出请求,经由引擎, 下载器中间键,发送给下载器dowmloader 这里的下载器中间键是设定在请求执行前,因此可以设定代理,请求头,cookie等

    3、 spider打开某网页,获取到一个或者多个request,经由scrapy engine传送给调度器scheduler request特别多并且速度特别快会在scheduler形成请求队列queue,由scheduler安排执行

  • 相关阅读:
    最方便建立进程池,线程池的方法
    python并发编程之多线程
    Cpython解释器支持的进程与线程
    进程与线程理论基础
    爬虫关于高性能方面
    Python中 and,or 的计算规则
    存储库之——MongoDB
    解析库之——beautifulsoup
    破解极验滑动验证码
    爬取拉勾网示例
  • 原文地址:https://www.cnblogs.com/Raodi/p/11187763.html
Copyright © 2011-2022 走看看