美文网首页pythonPython
构建基础python爬虫思路

构建基础python爬虫思路

作者: 9ba4bd5525b9 | 来源:发表于2019-06-11 15:13 被阅读19次

    目的意义

    基础爬虫分5个模块,使用多个文件相互配合,实现一个相对完善的数据爬取方案,便于以后更完善的爬虫做准备。

    这里目的是爬取200条百度百科信息,并生成一个html文件,存储爬取的站点,词条,解释。

    本文思路来源书籍。其代码部分来源书籍。https://book.douban.com/subject/27061630/

    功能模块

    主文件:爬虫调度器,通过调用其他文件中的方法,完成最终功能实现。

    其他文件:URL管理器HTML下载器HTML解析器数据存储器

    设计思路

    定义SpiderMan类作为爬虫调度器。输入根URL开始爬取数据然后爬取结束。

    在爬取过程中,需要获取网页,和解析网页。

    解析网页需要HTML解析器,获取网页需要HTML下载器

    解析网页需要解析的数据有:URL,TITLE,CONTEXT等。则需要URL管理器数据存储器

    主文件设计

    主文件添加根URL,然后提取该URL,下载该URL内容。

    根据内容,调用解析器:

          解析出该URL中的新URL,存入URL管理器;

          解析出该URL中的标题,文本等信息,存入数据存储器。

    完成后开始下一次。这时URL管理器多出了新的URL,提取出新的URL,下载,解析,不断重复即可。

    重复结束以提取出的URL数量超过200则结束。

    代码如下:

    作为最初的设计,应该允许异常抛出,便于查看程序终止的原因,然后排查错误。

    HTML下载器设计

    下载网页,返回文本。即可。

    HTML解析器设计

    HTML解析器将下载的文本进行解析,需要解析出的数据有:页面的新URL页面的新数据文本

    建立相应的解析器,需要打开源码对比,然后进行使用源码分析,使用BeautifulSoup获取所需信息。

    为了便于主函数调用或者其他原因,将所有数据通过parser实现返回,其parser分别调用获取URL和获取数据文本的信息。

    为了处理一些不同网页可能抓取的意外情况导致程序终止,添加了一些判断。

    URL管理器设计

    为了避免重复的URL,使用python的set,建立集合初始化。参阅:https://www.runoob.com/python3/python3-set.html

    使用old_urls存储已经访问过的网址,使用new_urls存入将要提取的网址。

    然后写好has_new_url等方法,辅助主程序调用。当得到新的URL们时,主程序调用函数将他们存入。

    而主程序需要的其他URL管理方案,如提取,数量判定等,也在这里实现。

    数据存储器设计

    通过HTML解析器获取的数据,通过数据存储器进行存储。

    而最终将数据从内存写入到本地磁盘,也在该文件实现。

    为了调试美观,建议是先爬取一两个数据做好测试,写好table的宽度设定,加入style='word-break:break-all;word-wrap:break-word;'参数。参阅:https://zhidao.baidu.com/question/1385859725784504260.html

    最终效果:

    当然还有一些数据没有处理好。

    相关文章

      网友评论

        本文标题:构建基础python爬虫思路

        本文链接:https://www.haomeiwen.com/subject/jgjqfctx.html