专栏首页Python爬虫与数据挖掘一篇文章带你学会两个场景下Selenium爬取动态网页小技巧

一篇文章带你学会两个场景下Selenium爬取动态网页小技巧

/1 前言/

selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,是爬复杂动态网页的必备工具。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。

这里分两个场景,给大家介绍Selenium爬动态网页小技巧。

/2 场景一:替换日期控件值/

以12306网站为例,如下图所示,按照正常的方法,我们首先要定位到时间元素,然后调用selenium的click()方法进行点击。

这种操作也是可行的。但是,过了一段时间,我们再次运行自动化代码的时候,就会发现功能运行不正常。因为日期更改后,日历控件布局发生了变化,而且操作起来很麻烦。

我们先看一下日期框的元素,如下图所示:

重点看一下value=‘text’,这种属性值可以通过JavaScript来改变,三行代码就能解决这个问题,如下图所示:

第一行是要输入的日期,第二行是JavaScript代码,“documen.getElementById”是通过HTML的“id”定位元素,通过改变该元素的“value”实现值的变化。

效果演示如下:

/3 场景二:动态网页自动下拉/

一些复杂的动态网页需要下拉才能把元素显示完全,例如腾讯视频主页,如下图所示:

如果需要自动爬取这类动态网页,我们同样可以执行JavasScript的方法来实现,用5行代码就可以连续滑动网页,将动态网页元素全部展示出来,代码如下图所示:

小编这里采取的分步下拉的方法,每次滚动1/10,“window.scrollTo”为向下滑动的命令,“document.body.clientHeight”为整个窗口的高度,“h=(i/10)”为每次滑动的高度。

效果演示如下:

/4 结语/

将JavaScript应用到selenium中可以帮我们解决很多问题,这里举两个小例子只是抛砖引玉,希望大家以后遇到selenium不好解决的问题时可以考虑在JavaScript身上寻找突破。

欢迎大家积极尝试,消耗在家的无聊时间。本文涉及的代码都上传到了github地址上,后台回复“selenium”这个单词即可获取代码。

------------------- End -------------------

本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python),作者:Python进阶者

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一篇文章带你了解网络爬虫的概念及其工作原理

    众所周知,随着计算机、互联网、物联网、云计算等网络技术的风起云涌,网络上的信息呈爆炸式增长。毋庸置疑,互联网上的信息几乎囊括了社会、文化、政治、经济、娱乐等所有...

    Python进阶者
  • 如何利用Python网络爬虫抓取微信朋友圈的动态(上)

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的A...

    Python进阶者
  • 一篇文章带你了解网络爬虫的概念及其工作原理

    众所周知,随着计算机、互联网、物联网、云计算等网络技术的风起云涌,网络上的信息呈爆炸式增长。毋庸置疑,互联网上的信息几乎囊括了社会、文化、政治、经济、娱乐等所有...

    Python进阶者
  • 十年来,编程领域有什么重要进展?

    编程语言层出不穷,然而内核是万变不离其宗。我个人看法觉得是以下几个方面的变化比较明显。 语言本身: 1. 工业标准 网页标准有 W3C 控制,尤其是浏览器的开发...

    用户1667431
  • 持续集成利器,GitHub Actions

    GitHub Actions 是 GitHub 推出的持续集成服务,于 2018 年 10 月推出,目前已经可以投入到正式环境中使用。

    灵魂画师牧码
  • 安全系列之网页防篡改系统

    3手里的一个云项目交付了半年,客户业务系统也顺利通过了云上等保测评二级,为了提前为等保三级做好准备,客户拟购买一些云上的安全服务,需要服务商提供安全咨询,为此我...

    希望的田野
  • 博客园LaTex的测试,附带开启方法

    单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。其他全都为0,eg:

    逸鹏
  • Java|屏幕截图

    初入java,想用java来实现游戏脚本功能,但是奈何刚刚入门。于是我就将其分为了几个板块:1屏幕截图,2图片比对获取关键坐标,3对关键坐标进行操作。

    算法与编程之美
  • ​ CES中国厂商唱主角,要想成为焦点可学TCL

    文:罗超 CES(国际消费类电子产品展览会)已有47年的历史,不过中国厂商在2015年之前一直是配角,2015年却大不一样,来自深圳的公司便已占到约1/4。大家...

    罗超频道
  • 深度学习目标检测(object detection)系列(三) Fast R-CNN

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    chaibubble

扫码关注云+社区

领取腾讯云代金券