Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
于Python的自動化測試或者是爬蟲開發(fā)者來說,對于selenium庫想必都聽說過,selenium本身是作為Web應用測試工具,但是作為爬蟲工具也有很廣泛的用途。
Selenium雖然好用,但是它大多數的時刻都是和Web的網頁元素之間打交道,需要用到html網頁的標簽,CSS選擇器等知識。
雖然自動化程度較高,但是使用起來仍然不是很方便,上手也不是很容易。今天,小編就帶領大家來認識一款基于Selenium的庫——Helium。
Helium庫是基于Selenium基礎上的更加高級的Web自動化工具,它能夠通過網頁上可以看見的標簽和名稱等信息來進行用戶交互。我們可以用來進行點擊鍵盤的按鍵、點擊標簽、滾動鼠標等一系列的鼠標和鍵盤操作。
而Helium的安裝也是非常的簡單,如下圖所示:
大家只需要pip install Helium即可安裝,但是需要注意的是,普通的安裝方式會非常的慢,因此小編利用了清華鏡像來幫助下載,提升下載的速度。
安裝之后,我們就可以來使用Helium了,首先我們利用Helium來登錄一下GitHub賬號。其效果如下圖所示:
上圖中程序跳轉到GitHub的登錄界面,然后輸入用戶的名字和用戶的密碼,最后點擊登錄即可登錄上GitHub的賬號,過程很簡單,我們來看一下程序是如何編寫的吧。
上述的程序僅有短短的五行,而且每行的意義都非常的清晰和明確。
程序便可以直接登錄。下圖是對應的selenium登錄GitHub的程序。
對比之下,可以看出,Helium程序是非常的簡潔而且對用戶非常的友好。讓大家非常清楚每一步的操作。
接下來,為了更好地展示Helium的強大,小編利用Helium來自動化抓取百度圖片中的妹子圖片,看看我們是如何實現的吧,我們首先來介紹一下程序,并按照我們想下載百度圖片的思路來看待程序。
上述程序中,左邊是我們的程序索引,右面是我們的程序,我們可以按照我們提取百度圖片的思路來看待程序,小編分步解釋每一行代碼:
上述的每一行對應著程序中每條語句的含義,這樣理解起來是不是非常的方便了呢。
說實話,小編以前也用過Selenium但是總是覺得太重,使用成本很高,現在有了這個神器,做了一些封裝,幫我們省了很多事情,Python就是這么有趣,內個還等啥,有興趣的小伙伴趕緊試試吧。順便轉發(fā)+評論,小編將持續(xù)分享Python干貨知識!
下截圖:
點擊文件選擇框,我們不妨選一張尺寸比較大的圖片,例如下面這種2M多的釣魚收獲照:
于是圖片歘歘歘地傳上去了:
此時我們點擊最終上傳完畢的圖片地址,會發(fā)現原來2M多3000多像素寬的圖片被限制為400像素寬了:
保存到本地會發(fā)現圖片尺寸已經變成只有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()”。
一旦有了可傳輸的圖像數據,上傳下載就好實現了。例如下載前端壓縮好的圖片,可以參考我上一篇在掘金發(fā)布的文章:“純JS生成并下載各種文本文件或圖片”。
四、總結
經過“圖片→canvas壓縮→圖片”三步曲,我們完成了圖片前端壓縮功能。
作者:張鑫旭
鏈接:https://juejin.im/post/5bec3c6cf265da614312a0fa
來源:掘金
著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權,非商業(yè)轉載請注明出處。
Query文件下載方法及引入HTML語法
去jQuery網站下載文件包,點擊主頁的“Download”之后,進入下載頁面,可以選擇production版本的進行下載,但是點擊進去之后,瀏覽器并不會直接下載相關的文件,而是跳轉到一個“密密麻麻”都是jQuery代碼的頁面,仔細查看瀏覽器地址欄中的url便可知,該頁面其實就是jQuery的min版的文件,可以使用下面這種方法,下載jQuery文件:
右鍵點擊該頁面,在彈出的菜單中選擇另存為,在另存為的菜單中默認保存的后綴名為".js",如果不是,可以在下拉菜單中選擇該類型的選項,然后保存即可下載jQuery文件了。鄙人下載的是最新版本的jquery-3.7.1.min.js
提示:jQuery的文件的擴展名是".js",下載完之后,無需安裝,使用直接引入即可使用jQuery。
jQuery是js文件,引入HTML的方法與引入JavaScript文件的方法一樣,在HTML的head標簽內使用script標簽引入,比如:
<script src="../../static/js/jquery-3.7.1.min.js"></script>
如果不想下載jQuery,也可以通過CDN的方式,將jQuery引入HTML,比如:
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js" rel="external nofollow" >
</script>
下面實例將通過一個點擊按鈕添加文本的實例來展示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教程
免責聲明:內容僅供參考,不保證正確性!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。