Python学习笔记(17)掌握JS动态网页信息采集

作者: 2890bd62c72a | 来源:发表于2019-08-24 19:15 被阅读3次

    下面会从连续动作的适用范围、动作类型、如何使用连续动作、连续动作的循环执行说明等四个方面,全面地介绍连续动作的知识点。

    一、连续动作的适用范围

    越来越多的网页使用了JS动态技术,即网页信息不是立马显示出来的,而是要经过点击或输入之类的动作才能浏览到想要的信息,例如条件筛选、输入关键词搜索、滚屏加载、点击目录等等,而这类网页通常是没有独立网址的,不能对它直接采集,只能设置连续动作来实现相应鼠标动作的自动执行,从而加载出想要的信息然后采集下来。

    • 动作前后的网页地址没有变化,即想要采集的网页信息是没有独立的网址入口。
    • 需要连续多次的鼠标动作(点击、输入、筛选等等)才能浏览到想要的网页信息。

    如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

    二、连续动作的动作类型

    连续动作类型是逐步增加的,截止目前的爬虫,已经实现了10种类型,后续版本还会持续增加新类型。下面是各个动作类型的使用场景简介:

    1,悬浮:把鼠标移动到网页上的某些内容上,就会弹出一个窗口,想要采集弹窗里面的信息,就要设置悬浮动作。

    2,点击:如果要点击网页上的按钮或者是超链接,就要设置点击动作。

    3,双击:与点击动作相似,是连点两下鼠标。

    4,滚屏:对于页面很长甚至是加载不到尽头的瀑布流网页,想要采集到更多信息,就要设置滚屏动作,尽可能地滚屏加载出更多信息。

    5,输入:想要在搜索框上自动输入关键词,以获取到搜索结果的信息,例如在百度上输入关键词进行搜索。

    6,选择:用于网页上的下拉菜单的点选,能够实现从指定选项开始逐个选项的点击。

    7,提交:专门用于点击提交按钮,例如百度上输入关键词后还要点击搜索按钮。

    8,打码:集搜客爬虫与打码平台对接,把打码平台返回来的验证码自动输入和提交,适用于需要输入验证码的网页。

    9,回退:就是浏览器上的回退按钮,看了一个网页,想返回到之前的网页,就用回退动作。

    10,滚轮:前面有个滚屏,就是滚动网页右边的滚动条显示更多内容。而滚轮是完全模拟鼠标滑轮的动作,鼠标放在网页上哪个区域,滚轮就作用于哪个区域。

    三、如何使用连续动作

    连续动作的作用是模拟人在浏览网页时的各种操作,从而加载出想要的网页信息,最后再进行采集,所以,总体上可以分为两大操做步骤,第一步是模拟人浏览网页的操作,通过在规则里设置连续动作来实现;第二步是采集数据,像采集静态页面那样,直接对想要的信息做采集规则。

    关键是第一步,要弄清楚操作范围、设置哪些动作类型、动作的顺序以及要做多少个规则。大家可以先在浏览器上进行信息浏览,把操作范围以及动作类型和顺序整理出来,再做规则设置连续动作。

    四、连续动作的循环执行说明

    上面说过了,在连续动作里只需要设置操作范围、动作类型、动作顺序,不用管动作执行的循环,因为集搜客爬虫会根据xpath锁定的动作对象数量,自动循环执行,这里的循环是以一个或多个动作类型的组合为单位的,所以,不用纠结在怎样设置循环上面。

    在连续动作里只需设置两个点击动作,第一个点击动作是用于点击一级目录,通过xpath锁定每一个大区域(紫色框,共锁定20个对象),第二个点击动作是用于点击二级目录,通过xpath锁定每一个子区域(红色框,共锁定78个对象),最后,爬虫采集时就会以这两个点击动作为循环单位自动点击一级、二级目录,具体的执行过程如下:

    Tip:1:如何判断要做几个连续动作的规则

    关键要看网页结构是否改变,如果动作前后的网页结构变化了,那就要拆开一个规则,多级规则是通过连续动作里指定的目标主题名串联起来的。

    Tips2:连续动作与爬虫路线的区别

    连续动作的点击动作和爬虫路线的记号线索都可以模拟鼠标的点击动作,但连续动作实现的效果是在同一个网页上连续多次的点击,爬虫路线实现的效果则是在网页上做一次性的点击,通常是用于翻页点击。

    另外,爬虫路线的下级线索不是立马点击,而是把网址抓下来并传递到下级规则,以用于层级采集,适用于网页上具有独立网址的超链接。如果超链接没有独立网址,而是一段javascript代码,比如,onclick=”javascript:void(0)”,这种情况,只能用连续动作的点击动作。

    相关文章

      网友评论

        本文标题:Python学习笔记(17)掌握JS动态网页信息采集

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