分享

Python进行数据爬取

 易禅浮屠 2022-03-04

1.基本的爬虫架构

主要包括调度器,URL管理器,网页下载器,网页解析器这些部分,实现价值数据的获取。

1.1 URL管理器

      对待抓取的URL集合和已抓取的URL集合进行管理,避免重复抓取和循环抓取。

      主要有5个部分的功能,判断待添加URL是否在容器中、添加新的URL到待爬取集合、判断是否还有待爬取集合、获取待爬取URL、将URL从待爬取的集合移动到已爬取集合中。

     分类:Python内存(待爬取和已爬取两个set()集合),关系数据库(eg:MySQL,建表来实现存储),缓存数据库(eg:redis,支持set数据结构)。大型公司一般采用高效的缓存数据库作为URL管理器,小型的或想要永久保存的采用关系数据库作为URL管理器,小型的不需要保存的可以直接存储在Python内存中。

1.2 网页下载器(爬虫的核心组件)

       将互联网上URL对应的网页下载到本地。

       主要功能有:将待获取URL对应的互联网网页以HTML的形式下载到本地,并以本地文件或内存字符串的形式进行存储,以便后续的处理。

       分类:urllib2(Python官方基础模块),requests(Python的第三方插件)等。

1.2.1 urllib2下载网页的方法

a.使用urlopen函数直接获取网页信息

具体代码:


b.添加data(用户需要输入的数据),http header数据,结合urllib2的Request和urlopen函数来获取网页信息

具体代码:


c.添加特殊情景的处理器,根据不同的URL选择不同的处理器(eg:HTTPCookieProcessor、ProxyHandler、HTTPSHandler、HTTPRedirectHandler),综合使用urllib2的build_opener、install_opener和urlopen函数来获取网页信息。

具体代码(以Cookie为例):


1.3 网页解析器

        从网页中提取有价值数据的工具。

        主要功能有:提取价值数据,提供新的待爬取的URL列表。

        分类:模糊匹配(正则表达式),结构化解析(html.parser,Beautiful Soup第三方插件,lxml)。其中Beautiful Soup这个第三方插件可以使用html.parser或lxml作为解析器,功能较强大。

1.3.1 结构化解析

         将整个网页文档加载为一个DOM(Document Object Model文档对象模型)树。

         

1.3.2 Beautiful Soup网页解析语法

a.根据下载的HTML网页,创建BeautifulSoup对象。此时即将整个网页文档字符串下载为一个DOM树。


b.根据DOM树进行节点的搜索,对应的方法有find_all(搜索出所有满足要求的节点)和find(搜索出第一个满足要求的节点),这两种方法的参数设置相同,分别为name,attrs,string,分别对应为名称、属性、文字,并依据这三种信息进行搜索。


c.在获取节点后,我们可以对节点的名称、属性、文字等进行解析,访问节点信息。


2.运行流程


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多