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 日韩中文字幕在线观看视频,2020年国产高中毛片在线视频,国产免费午夜

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          網(wǎng)上動態(tài)圖有多污?一看嚇一跳!Python爬取上萬條

          網(wǎng)上動態(tài)圖有多污?一看嚇一跳!Python爬取上萬條動態(tài)圖!

          在前面的話

          夜涼如水,蒼穹下,秋葉舞。

          天橋下川流不息的斑斕車燈,人來人往的十字街角,喧囂與繁華的城。

          我需要看看小姐姐的圖片,好好感受下這世界的溫柔以待。

          私信小編007或者01即可獲取數(shù)十套PDF或者零基礎(chǔ)入門資料一套哦!

          一.思路分析

          按照爬蟲的基本規(guī)律:

          1.找到目標

          2.抓取目標

          3.處理目標內(nèi)容,獲取有用的信息

          行動

          1.我們的目標是: http://gifcc.com/forum.php

          這個網(wǎng)站呢,是一個論壇式網(wǎng)站,里面分了幾大類,反正試試各種動圖。

          我們的目標呢,就是找到這(收)些(藏)動(到)圖(自)的(己)地(電)址(腦).

          2.看看各個模塊的網(wǎng)址,有什么規(guī)律

          對,沒錯,如果以游客的身份進行訪問,那么各個模塊的網(wǎng)址就是這樣的形式:http://gifcc.com/forum-XX-1.html

          開工動手

          1.獲取入口頁面內(nèi)容

          即根據(jù)傳入的URL,獲取整個頁面的源碼

          這里我們使用了webdriver以及PhantomJS這些模塊,為什么呢?因為網(wǎng)頁是動態(tài)加載的,這樣可以抓取的數(shù)據(jù)全一點。

          2.獲取頁碼數(shù)

          這里的頁碼處理用到了一個模板pq,采用PyQuery的方式查找我們需要的元素,感覺更好處理一點,挺方便的

          同時這里的處理稍微有點意思,如果觀察這個頁面的話,會發(fā)現(xiàn),每個模板的頁碼,在上面和下面都有一個,然后

          我這里截取的一下,因為我們只需要一個頁碼數(shù)字即可

          3-6 第三步到第六步一起來說

          其實就是根據(jù)頁碼數(shù),來進行遍歷,獲取到每一頁的內(nèi)容

          然后得到每一頁中的所有圖片地址

          在進行獲取每一頁的內(nèi)容的時候,需要重新組裝頁面地址。

          有了新的地址,就可以獲取當前頁面的內(nèi)容,并進行數(shù)據(jù)處理,得到每一張圖片的地址列表

          在獲取到圖片列表后,再次解析,獲取每一張圖片的URL

          將圖片存到本地,以及將數(shù)據(jù)寫入數(shù)據(jù)庫

          到這里其實大體的內(nèi)容已經(jīng)完成了,我們能夠?qū)⑦@個論壇的各個模塊的動圖保存在本地,同時,也將數(shù)據(jù)放入數(shù)據(jù)庫中.

          數(shù)據(jù)庫的篩選

          在完成了將數(shù)據(jù)放入到數(shù)據(jù)庫的之后, 我想著可以直接通過調(diào)用數(shù)據(jù)庫,將圖片保存

          (為什么有這個想法呢,因為我發(fā)現(xiàn)如果直接在主程序中存貯圖片,它跑的太慢了,不如將數(shù)據(jù)都放到數(shù)據(jù)庫中,之后專門調(diào)用數(shù)據(jù)庫來貯存圖片)

          但是這里發(fā)現(xiàn)一個問題,數(shù)據(jù)中的內(nèi)容挺多的,然后發(fā)現(xiàn)了好多內(nèi)容是重復(fù)的,因此我們需要對數(shù)據(jù)庫進行去重

          關(guān)于數(shù)據(jù)去重的內(nèi)容,其實我之前的文章已經(jīng)寫過了(寫那篇文章的時候,這個爬蟲已經(jīng)完成了呢~)

          主要思路是針對某一個元素的數(shù)量進行操作,pymongo里面有一個方法是可以統(tǒng)計指定元素的數(shù)量的,如果當前元素只有一個,就不管,不是一個元素,就刪除

          核心代碼如下:

          讀取數(shù)據(jù)庫中的內(nèi)容,存儲圖片

          數(shù)據(jù)去重之后,再次進行圖片的存儲,就方便多了

          之后圖片刪除了也不用重新跑一遍,核心代碼如下:

          完整代碼

          01_get_gif_url.py

          02_delete_repeat_url_in_mongodb.py

          謝謝閱讀!!!

          育機構(gòu)在做定制化軟件開發(fā)的時候,會遇到這樣一個問題:機構(gòu)需要定制自己的錯題本封面和封底,并且題目界面需要有各種便簽可供學(xué)生標記,例如下面這個圖:


          要顯示這樣的錯題界面,如果用word形式,一種辦法是通過html轉(zhuǎn)換成word,但是這樣會導(dǎo)致部分理科題目無法顯示的情況;另一個辦法是直接在word中顯示html,這種形式其實還是html,體驗不太好,打印出來也會出問題。所以我們采取的是通過PDF的形式展示這種格式,并且還可以定制封面和封底:如下圖:



          因為PDF是比較好的打印格式,不會出現(xiàn)混亂的情況,所以目前就是怎么解決html完美轉(zhuǎn)換成PDF的問題。


          我們嘗試了很多插件以后,最終發(fā)現(xiàn)下面這2個工具比較合適:wkhtmltopdf和phantomjs,下面分別試一下他們的效果:


          • wkhtmltopdf:下載完成后需要添加到環(huán)境變量才能在代碼中使用,比如我們使用的是PHP,就可以通過shell_exec執(zhí)行命令行。通過官網(wǎng)我們知道wkhtmltopdf還是非常強大的,可以設(shè)置頁面為A3或者A4格式,可以設(shè)置頁眉頁腳,也可以設(shè)置字間距,字體,邊框等,能滿足大部分的轉(zhuǎn)換需求,但是wkhtmltopdf也有他的缺點,就是對于js渲染后的頁面轉(zhuǎn)換后顯示不太友好。對于我們的需求而言,要解決的難點就是理科公式的問題,因為我們的latex公式基本都是js渲染后才顯示。后來發(fā)現(xiàn)wkhtmltopdf有一個參數(shù)就是可以設(shè)置等待時間,最終我們設(shè)置等待5秒在導(dǎo)出,就解決了latex導(dǎo)出PDF的問題,并且實現(xiàn)了完美的打印


          • phantomjs:使用方法都差不多,只是phantomjs需要通過js來配置參數(shù)。一樣的需要先添加phantomjs到環(huán)境變量,然后通過代碼執(zhí)行命令行實現(xiàn),也可以設(shè)置加載時間來實現(xiàn)js對html的渲染,只是phantomjs沒有wkhtmltopdf轉(zhuǎn)換專業(yè)。


          本文希望通過自己的開發(fā)經(jīng)驗,減少教育軟件開發(fā)者的坑。可以通過下面這個網(wǎng)站進行測試:http://www.widomk12.cn

          一篇:node.js 15 如何操作Excel文件

          幾乎所有的項目涉及到報表或者合同處理等,都會跟PDF打交道。


          pdf

          node.js中,用的比較多的是html-pdf,每周下載量達到8萬多,是比較多了。


          html-pdf

          這款工具的特點是不光可以通過代碼調(diào)用API生成pdf,還提供命令行工具html-pdf來將html文件轉(zhuǎn)換成pdf文件。

          接下來,我們看一下html-pdf的安裝使用。

          html-pdf 安裝

           npm install -g html-pdf

          由于html-pdf是基于phantomjs的,所以在安裝過程中會自動下載phantomjs。

          html-pdf命令行

          html-pdf test/businesscard.html businesscard.pdf

          直接運行html-pdf加上源html文件,后面加上pdf文件名就可以生成pdf文件。

          創(chuàng)建PDF文件,代碼示例

          //引入fs, html-pef模塊
          var fs=require('fs');
          var pdf=require('html-pdf');
          //讀取html文件
          var html=fs.readFileSync('./test/businesscard.html', 'utf8');
          //參數(shù)options, 將PDF format設(shè)為letter, 如果是A4,直接將下面代碼中的letter換成A4即可
          var options={ format: 'Letter' };
          
          //創(chuàng)建pdf文件
          pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
            if (err) return console.log(err);
            console.log(res); // { filename: '/app/businesscard.pdf' }
          });

          相關(guān)API

          var pdf=require('html-pdf');
          pdf.create(html).toFile([filepath, ]function(err, res){
            console.log(res.filename);
          });
          
          pdf.create(html).toStream(function(err, stream){
            stream.pipe(fs.createWriteStream('./foo.pdf'));
          });
          
          pdf.create(html).toBuffer(function(err, buffer){
            console.log('This is a buffer:', Buffer.isBuffer(buffer));
          });

          HTML中的header 和footer可以直接讀出

          html-pdf 可以將html中的header和footer讀出。只要是id為pageHeader或者pageFooter的都可以被識別出來。

          <div id="pageHeader">Default header</div>
          <div id="pageHeader-first">Header on first page</div>
          <div id="pageHeader-2">Header on second page</div>
          <div id="pageHeader-3">Header on third page</div>
          <div id="pageHeader-last">Header on last page</div>
          ...
          <div id="pageFooter">Default footer</div>
          <div id="pageFooter-first">Footer on first page</div>
          <div id="pageFooter-2">Footer on second page</div>
          <div id="pageFooter-last">Footer on last page</div>

          關(guān)于參數(shù)options

          在調(diào)用API pdf.create(html, options).toFile()創(chuàng)建PDF時,這里面的參數(shù)options相當強大,可以傳很多數(shù)據(jù)。包括之前說的A4格式。


          主站蜘蛛池模板: 久久无码AV一区二区三区| 亚洲乱码日产一区三区 | 国产裸体舞一区二区三区| 波多野结衣一区二区三区高清在线 | 视频精品一区二区三区| 日本一区二区三区在线网| 蜜桃传媒一区二区亚洲AV| 久久精品国产一区| 中文字幕人妻无码一区二区三区| 国产一区二区在线观看麻豆| 日本精品无码一区二区三区久久久 | 亚洲一区无码中文字幕| 无码人妻一区二区三区免费| 国产精品一区二区久久精品| 色久综合网精品一区二区| 一区二区三区视频观看| 日韩一区二区三区精品| 一区二区日韩国产精品| 无码日韩精品一区二区人妻 | 在线一区二区观看| 精品人妻无码一区二区三区蜜桃一 | 亚洲中文字幕一区精品自拍| 人妻无码久久一区二区三区免费| 日韩电影一区二区三区| 无码aⅴ精品一区二区三区浪潮| 国偷自产一区二区免费视频| 国99精品无码一区二区三区 | 国产一区二区久久久| 日韩一区二区三区射精| 精品无码综合一区二区三区| 国产一区内射最近更新| 国产精品无码不卡一区二区三区 | 精品久久综合一区二区| 国产成人一区二区三区电影网站| 日韩在线视频不卡一区二区三区| 影院无码人妻精品一区二区| 日韩精品无码视频一区二区蜜桃| 亚洲av福利无码无一区二区| 国产对白精品刺激一区二区| 国产凸凹视频一区二区| 精品国产日韩亚洲一区|