解放双手 | 10行Python代码实现一款网页自动化工具

Python知识圈

共 2563字,需浏览 6分钟

 · 2020-06-28


点击上方Python知识圈设为星标

回复1024获取Python资料


61622620c0a1a6a81c220e2380684d38.webp


阅读文本大概需要 3 分钟


点击「阅读原文」查看pk哥原创精品视频。

各种各样的网站在我们日常工作和学习中占据着举足轻重的地位,学习、影音娱乐、查询资料、协同办公,越来越多的任务都被迁移到浏览器。

因此,网页也蕴含着很多有价值、我们能够用得到的资源。例如,数据、歌曲、影视、文本、图片。所以,这几年来爬虫这项技术也成了很多开发人员必备的技能之一。

以Python爬虫为例,比较常用的爬虫手段是结合request、正则表达式等有一定门槛的工具来完成。而且,还需要对HTML、web具有一定的基础。

这把很多开发同学拒之门外,也让很多初学者花费很多功夫和时间来学习爬虫这些技能。

其实,除了上述提到那些具有一定门槛的爬虫知识之外,有一些另辟蹊径的同学会选择Selenium这款Web应用测试工具来完成爬虫任务,它能够像真正的用户一样完成一系列的操作。

Selenium已经很好用,但是,它的大多数交互还是和Web元素之间进行的,需要使用到HTML id、xpath、CSS选择器。虽然自动化程度高了一些,但是还不算足够的容易使用。

而本文的主角Helium则是在Selenium的基础上封装的更加高级的Web自动化工具,它能够通过网页端可见的标签名称来和Web进行交互,例如,

  • 点击键盘按键
  • 右键点击
  • 悬浮
  • 滚动鼠标
  • 拖动文件
  • 刷新
  • ......

9be0cc3909ee650f72de8001a21171c4.webp

通过Helium,即便不在了解Html、CSS这些知识,你依然可以轻松的完成Web自动化程序的开发,轻松掌握爬虫技能,同时能够辅助日常重复性劳动,彻底解放你的双手。

Helium

为了方便大家理解和使用,Helium作者把一些常用方法总结了一个清单。另外,在Python文件列出了公共函数,使用者可以通过阅读这个Python文件的代码来了解有哪些函数接口可以调用。

在前面GIF动图中给出了Helium与Github的交互过程,其中涉及了我们常用的操作,例如,

  • 输入账号密码
  • 点击按钮
  • 跳转网页

在这里,我就不再重复这个过程,下面以爬取网页图片链接的例子来讲解一下Helium的用法,同时把Helium的常用操作串联起来。各位可以根据自己的需求,举一反三,来发挥Helium的价值。

首先,来了解一下我们个人在下载图片的过程中的具体流程。

  1. 打开百度搜索;
  2. 搜索相关图片;
  3. 跳转到图片页面;
  4. 打开图片;
  5. 点击下载按钮;

下面,就通过Helium来逐步完成上述5步。

打开百度搜索

Helium可以直接打开对应的网址,目前支持Chrome和火狐浏览器,只要用到start_chrome或者start_firefox函数,下面以Chrome浏览器为例,

from helium import *
start_chrome("www.baidu.com")

94d50f76a01ba538ea00882d83593254.webp

搜索图片&跳转到图片页面

搜索图片过程中,首先需要在搜索框输出想要的目标图片,然后点击百度一下或者按下ENTER键。

write("詹姆斯")

click("百度一下")
// 或者
press(ENTER)

click("图片")

e0499726208d81eab43d748ca32b50ef.webp

打开图片

在前面Helium与Github交互的示例中,我们发现,Sign inUsername等都有标签名称。但是,我们在这里跳转到图片页面时,发现每幅图片并没有标签,那么我们该怎么确定点击哪一幅图呢?

好在Helium兼容了Selenium的接口,我们可以通过Selenium来获取页面的元素,然后结合Helium的点击就可以实现打开图片这一步骤。

// pn1是其中一幅图的名称,通过名称来获取对应的元素,然后调用Helium的click函数点击图片
img = driver.find_element_by_name("pn1"
click(img)

0ee59ae5b8442e8789aef73aa519d327.webp

点击下载按钮

最后一步就是点击下载按钮,这一步和上一步类似,我们先通过Selenium的接口来获取Web元素,然后点击即可。

download = driver.find_element_by_class_name("btn-download")
click(download)

26f71131c74366bc08706e8e4072cd33.webp

到这里,就完成了整个自动化爬取图片的过程,完成代码如下,

from helium import *
start_chrome("www.baidu.com")
write("詹姆斯")
press(ENTER)
click("图片")
img = driver.find_element_by_name("pn1"
click(img)
download = driver.find_element_by_class_name("btn-download")
click(download)

可以看出,整条爬取图片的代码仅仅需要10行代码,和人为手动操作步骤一样,非常简单。

除了下载图片这项简单的任务,我们也可以利用它开发一款自动化的工具,例如文件的上传、编辑、下载影视音乐、B站视频等,可以举一反三。

如何查询指定元素名称?

在前面事例中,涉及到pn1btn-download这2个HTML层面的内容,分别是元素名称和元素类别名称,那么,这是怎么获取的呢?

其实,非常简单,我们只需要鼠标右键点击对应按钮,然后选择检查即可。

69fd26434f206e0ebd57a3cf05c9b84c.webp



6cd06749b234d8c29d47006f60da98e5.webp
-----------------------公众号:Python知识圈博客:www.pyzhishiquan.com知乎Python知识圈微信视频号:菜鸟程序员 (分享有趣的编程技巧、Python技巧)bilibili:菜鸟程序员的日常(目前原创视频:16,累计播放量:55万)

一个学习Python的人,喜欢分享,喜欢搞事情!

长按下图二维码关注,和你一起领悟Python的魅力



Python知识圈公众号的交流群已经建立,群里可以领取 Python 和人工智能学习资料,大家可以一起学习交流,效率更高,如果是想发推文、广告、砍价小程序的敬请绕道一定记得备注「交流学习」,我会尽快通过好友申请哦!通过好友后私聊我「学习资料」或者「进群」都可以。

扫码添加,备注:交流学习




往期推荐01

公众号所有文章汇总导航(2-10更新)

02

川普一天推特200条?Python求证一波

03

打基础一定要吃透这12类 Python 内置函数


我就知道你“在看”ba3f821e9646d341053d81dd5a6e3476.webp
浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报