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

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

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

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

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

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

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

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

通过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")

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

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

write("詹姆斯")click("百度一下")// 或者press(ENTER)click("图片")

打开图片

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

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

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

点击下载按钮

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

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

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

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站视频等,可以举一反三。

如何查询指定元素名称?

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

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


我整理了10T+资源进行共享,其中包括实用工具、Python电子书、Spring视频教程、机器学习资源,扫码关注我的公众号“平凡而诗意”,后台回复相应关键字即可获得。除此之外,原创技术文章会第一时间推送,如果喜欢,麻烦点一下“在看”~

html搜索框代码_解放双手 | 10行Python代码实现一款网页自动化工具相关推荐

  1. python9行代码_如何用9行Python代码编写一个简易神经网络

    原标题:如何用9行Python代码编写一个简易神经网络 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 学习人工智能时,我给自己定了一个目标--用Pyth ...

  2. python200行代码_如何用200行Python代码“换脸”

    本文将介绍如何编写一个只有200行的Python脚本,为两张肖像照上人物的"换脸". 这个过程可分为四步: 检测面部标记. 旋转.缩放和转换第二张图像,使之与第一张图像相适应. 调 ...

  3. python30行代码_仅利用30行Python代码来展示X算法

    假如你对数独解法感兴趣,你可能听说过精确覆盖问题.给定全集 X 和 X 的子集的集合 Y ,存在一个 Y 的子集 Y*,使得 Y* 构成 X 的一种分割. 这儿有个Python写的例子. X = {1 ...

  4. python好看图案的编程代码_只需15行Python代码,实现图像定位功能

    引言本教程使用的环境:Windows 10 + Python 3.6 数据源:The Oxford-IIIT Pet Dataset 需要的第三方库:import tensorflow as tf i ...

  5. 如何制作python代码_如何使用50行Python代码制作一个计算器

    (点击上方公号,可快速关注) 作者:Stories For Sad Robots 译者:开源中国社区 链接:http://www.oschina.net/translate/how-to-write- ...

  6. 10行python代码的词云

    关于词云wordcloud 什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本 ...

  7. 10行 python 代码做出哪些酷炫的事情?

    来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...

  8. 获取clientheight为0_用10行python代码获取全国城市交通生活圈

    今天在网上冲浪看到一个很花哨的数据,全国各城市主要商圈从早上6点到晚上10点的20min,30min,45min,60min,90min生活圈轮廓. 1 获取思路 按下F12 按下F12,点击淮海路可 ...

  9. 10 行 Python 代码能实现哪些有趣功能?

    大家好,我是菜鸟哥 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作.下 ...

最新文章

  1. MyBatis—insert语句返回主键和selectKey标签
  2. maven 亲测可用国内镜像 阿里云
  3. android代码清除锁屏密码,清除Android手机锁屏密码的三个小妙招
  4. python 分类变量xgboost_XGBoost 原理 及 常见面试题
  5. AI 重塑 IT 的 5 种方式
  6. 【渝粤教育】国家开放大学2018年春季 0077-22T古代汉语专题 参考试题
  7. 如何将数据转换为时间序列数据
  8. 【hiho一下_week256】Diligent Robots
  9. 重新发现业务架构:银行数字化转型经验与方法分析
  10. 10号前发工资和15号后发工资有啥区别
  11. PBOC卡片应用分析(四)非接触式IC卡规范
  12. SQL中实用的小技巧
  13. w ndows 10关机,Win10设置定时开关机休眠唤醒的方法
  14. Kafka Streams开发单词计数应用
  15. 【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within(已附源码)
  16. matlab图像转为灰度,matlab怎么读取一幅图像,并转换为灰度图像
  17. c++ 继承的同名成员以及同名函数的处理方式
  18. PWA (Progressive Web App)
  19. 流氓软件卸载后又自动安装怎么办
  20. Windows系统的【Windows照片查看器】没有了

热门文章

  1. Bailian4002 谁是你的潜在朋友【暴力】
  2. HDU2569 彼岸【打表+记忆化递归】
  3. NUC1014 排版题.输出排列成菱形的字母【打印图案】
  4. 正则表达式 —— 括号与特殊字符
  5. 伸展树(splay tree)
  6. 排列(permutation)的末尾 0 的个数
  7. 算法 Tricks(二) —— 大数的处理
  8. 机器学习基础(十四)—— 统计计数、majority count 与其数学记号
  9. python教程视频 网盘-Python学习路线2019版(课程大纲+视频教程+网盘资源下载)...
  10. python自动化办公真的好用吗-用 Python 自动化办公能做到哪些有趣或有用的事情?...