整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

舔狗福利!这个Python爬虫神器太爽了,自动下载妹

舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

于Python的自动化测试或者是爬虫开发者来说,对于selenium库想必都听说过,selenium本身是作为Web应用测试工具,但是作为爬虫工具也有很广泛的用途。

Selenium虽然好用,但是它大多数的时刻都是和Web的网页元素之间打交道,需要用到html网页的标签,CSS选择器等知识

虽然自动化程度较高,但是使用起来仍然不是很方便,上手也不是很容易。今天,小编就带领大家来认识一款基于Selenium的库——Helium。

Helium库简介

Helium库是基于Selenium基础上的更加高级的Web自动化工具,它能够通过网页上可以看见的标签和名称等信息来进行用户交互。我们可以用来进行点击键盘的按键、点击标签、滚动鼠标等一系列的鼠标和键盘操作。

而Helium的安装也是非常的简单,如下图所示:

大家只需要pip install Helium即可安装,但是需要注意的是,普通的安装方式会非常的慢,因此小编利用了清华镜像来帮助下载,提升下载的速度。

安装之后,我们就可以来使用Helium了,首先我们利用Helium来登录一下GitHub账号。其效果如下图所示:

上图中程序跳转到GitHub的登录界面,然后输入用户的名字和用户的密码,最后点击登录即可登录上GitHub的账号,过程很简单,我们来看一下程序是如何编写的吧。

上述的程序仅有短短的五行,而且每行的意义都非常的清晰和明确。

  • 首先,第一行是启动浏览器;
  • 然后,我们直接跳转到GitHub账号的登录页面,大家也可以直接将第一第二句程序合并成为go_to("https://github.com/login")。
  • 第三句程序,是向GitHub登录界面中输入用户名或者是邮箱的账号,注意,这里的into代表的是我们往哪里写,程序可以直接根据网页上的名字进行定位,直接定位到"Username or email address“的标签下,对于程序编写者来说更加便捷。不需要再去寻找对应的元素;
  • 第四句是向里面写入密码;
  • 最后第五句,直接点击”Sign in“

程序便可以直接登录。下图是对应的selenium登录GitHub的程序。

对比之下,可以看出,Helium程序是非常的简洁而且对用户非常的友好。让大家非常清楚每一步的操作。


爬取妹子图片

接下来,为了更好地展示Helium的强大,小编利用Helium来自动化抓取百度图片中的妹子图片,看看我们是如何实现的吧,我们首先来介绍一下程序,并按照我们想下载百度图片的思路来看待程序。

上述程序中,左边是我们的程序索引,右面是我们的程序,我们可以按照我们提取百度图片的思路来看待程序,小编分步解释每一行代码:

  • 打开百度图片的网址;
  • 输入“小姐姐”的关键词搜索;
  • 点击enter进行搜索;
  • 对于每张图片,Helium找到该元素;
  • 点击图片,进入图片的子网页;
  • 点击下载该图片;
  • 程序睡眠两秒,用来下载图片;
  • 跳转回子网页;
  • 关闭子网页;
  • 跳转回子页面;
  • 程序睡眠两秒;

上述的每一行对应着程序中每条语句的含义,这样理解起来是不是非常的方便了呢。

说实话,小编以前也用过Selenium但是总是觉得太重,使用成本很高,现在有了这个神器,做了一些封装,帮我们省了很多事情,Python就是这么有趣,内个还等啥,有兴趣的小伙伴赶紧试试吧。顺便转发+评论,小编将持续分享Python干货知识!

下截图:

点击文件选择框,我们不妨选一张尺寸比较大的图片,例如下面这种2M多的钓鱼收获照:

于是图片歘歘歘地传上去了:

此时我们点击最终上传完毕的图片地址,会发现原来2M多3000多像素宽的图片被限制为400像素宽了:

保存到本地会发现图片尺寸已经变成只有70K了:

以上就是图片前端压缩并上传demo的完整演示。

二、实现原理

要想使用JS实现图片的压缩效果,原理其实很简单,核心API就是使用canvas的drawImage()方法。

Canvas本质上就是一张位图,而drawImage()方法可以把一张大大的图片绘制在小小的Canvas画布上,不久等同于图片尺寸压缩了?

对于本案例的压缩,使用的5个参数的API方法:

context.drawImage(img, dx, dy, dWidth, dHeight);复制代码

各参数具体含义可以参见“Canvas API中文文档-drawImage”,这里不展开。

举例:

一张图片(假设图片对象是img)的原始尺寸是4000*3000,现在需要把尺寸限制为400*300大小,很简单,原理如下代码示意:

var canvas=document.createElement('canvas');
var context=canvas.getContext('2d');
canvas.width=400;
canvas.height=300;
// 核心JS就这个
context.drawImage(img,0,0,400,300);复制代码

把大图片画在一张小画布上,压缩就这么实现了,是不是简单的有点超乎想象。

三、如果想要上传或下载?

如果想要上传图片或者下载图片,可以使用canvas.toDataURL()或者canvas.toBlob()方法先进行转换。

1. canvas.toDataURL()

语法如下:canvas.toDataURL(mimeType, qualityArgument)复制代码

可以把画布转换成base64格式信息图像信息,纯字符的图片表示法。

其中:

mimeType表示canvas导出来的base64图片的类型,默认是png格式,也即是默认值是'image/png',我们也可以指定为jpg格式'image/jpeg'或者webp等格式。file对象中的file.type就是文件的mimeType类型,在转换时候正好可以直接拿来用(如果有file对象)。

qualityArgument表示导出的图片质量,只要导出为jpg和webp格式的时候此参数才有效果,默认值是0.92,是一个比较合理的图片质量输出参数,通常情况下,我们无需再设定。

更多关于toDataURL()方法的信息可以参见“Canvas API中文文档-toDataURL()”。

2. canvas.toBlob()方法

语法如下:canvas.toBlob(callback, mimeType, qualityArgument)复制代码

可以把画布转换成Blob文件,通常用在文件上传中,因为是二进制的,对后端更加友好。

和toDataURL()方法相比,toBlob()方法是异步的,因此多了个callback参数,这个callback回调方法默认的第一个参数就是转换好的blob文件信息,本文一开始的demo案例中的文件上传就是将canvas图片转换成二进制的blob文件,然后再ajax上传的,代码如下:

// canvas转为blob并上传
canvas.toBlob(function (blob) {
 // 图片ajax上传
 var xhr=new XMLHttpRequest();
 // 开始上传
 xhr.open("POST", 'upload.php', true);
 xhr.send(blob); 
});复制代码

更多关于toBlob()方法的信息可以参见“Canvas API中文文档-toBlob()”。

一旦有了可传输的图像数据,上传下载就好实现了。例如下载前端压缩好的图片,可以参考我上一篇在掘金发布的文章:“纯JS生成并下载各种文本文件或图片”。

四、总结

经过“图片→canvas压缩→图片”三步曲,我们完成了图片前端压缩功能。

作者:张鑫旭

链接:https://juejin.im/post/5bec3c6cf265da614312a0fa

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Query文件下载方法及引入HTML语法

jQuery下载

去jQuery网站下载文件包,点击主页的“Download”之后,进入下载页面,可以选择production版本的进行下载,但是点击进去之后,浏览器并不会直接下载相关的文件,而是跳转到一个“密密麻麻”都是jQuery代码的页面,仔细查看浏览器地址栏中的url便可知,该页面其实就是jQuery的min版的文件,可以使用下面这种方法,下载jQuery文件:

右键点击该页面,在弹出的菜单中选择另存为,在另存为的菜单中默认保存的后缀名为".js",如果不是,可以在下拉菜单中选择该类型的选项,然后保存即可下载jQuery文件了。鄙人下载的是最新版本的jquery-3.7.1.min.js

提示:jQuery的文件的扩展名是".js",下载完之后,无需安装,使用直接引入即可使用jQuery。

jQuery引入HTML的方法

jQuery是js文件,引入HTML的方法与引入JavaScript文件的方法一样,在HTML的head标签内使用script标签引入,比如:

<script src="../../static/js/jquery-3.7.1.min.js"></script>

CDN引入jQuery的方法

如果不想下载jQuery,也可以通过CDN的方式,将jQuery引入HTML,比如:

<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js" rel="external nofollow" >
</script>

jQuery引入实例代码,及在线编辑器

下面实例将通过一个点击按钮添加文本的实例来展示jQuery的用法,如下:

<script src="../../static/js/jquery-3.7.1.min.js"></script>
<p id="p1"></p>
<button id="btn" class="btn">jQuery</button>

<script>
  $('#btn').click(function(){
    $('#p1').text("jQuery添加段落文本");
  })
</script>

来源:笨鸟工具-璞玉天成,大器晚成

原文:jQuery下载及引入HTML | jQuery教程

免责声明:内容仅供参考,不保证正确性!