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 日本经典在线三级视频,亚洲综合网在线观看,国产在线精品一区二区高清不卡

          整合營(yíng)銷服務(wù)商

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

          免費(fèi)咨詢熱線:

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

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

          在前面的話

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

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

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

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

          一.思路分析

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

          1.找到目標(biāo)

          2.抓取目標(biāo)

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

          行動(dòng)

          1.我們的目標(biāo)是: http://gifcc.com/forum.php

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

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

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

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

          開(kāi)工動(dòng)手

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

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

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

          2.獲取頁(yè)碼數(shù)

          這里的頁(yè)碼處理用到了一個(gè)模板pq,采用PyQuery的方式查找我們需要的元素,感覺(jué)更好處理一點(diǎn),挺方便的

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

          我這里截取的一下,因?yàn)槲覀冎恍枰粋€(gè)頁(yè)碼數(shù)字即可

          3-6 第三步到第六步一起來(lái)說(shuō)

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

          然后得到每一頁(yè)中的所有圖片地址

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

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

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

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

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

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

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

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

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

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

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

          核心代碼如下:

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

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

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

          完整代碼

          01_get_gif_url.py

          02_delete_repeat_url_in_mongodb.py

          謝謝閱讀!!!

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


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



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


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


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


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


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

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

          幾乎所有的項(xiàng)目涉及到報(bào)表或者合同處理等,都會(huì)跟PDF打交道。


          pdf

          node.js中,用的比較多的是html-pdf,每周下載量達(dá)到8萬(wàn)多,是比較多了。


          html-pdf

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

          接下來(lái),我們看一下html-pdf的安裝使用。

          html-pdf 安裝

           npm install -g html-pdf

          由于html-pdf是基于phantomjs的,所以在安裝過(guò)程中會(huì)自動(dòng)下載phantomjs。

          html-pdf命令行

          html-pdf test/businesscard.html businesscard.pdf

          直接運(yùn)行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的都可以被識(shí)別出來(lái)。

          <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í),這里面的參數(shù)options相當(dāng)強(qiáng)大,可以傳很多數(shù)據(jù)。包括之前說(shuō)的A4格式。


          主站蜘蛛池模板: 久久亚洲AV午夜福利精品一区| 天天看高清无码一区二区三区 | 色狠狠一区二区三区香蕉蜜桃| 午夜影院一区二区| 狠狠色婷婷久久一区二区 | 久久久久人妻精品一区三寸蜜桃| 麻豆国产在线不卡一区二区| 麻豆一区二区99久久久久| 美女视频在线一区二区三区| 日韩国产一区二区| 国产成人综合亚洲一区| 午夜视频在线观看一区| 欧美日韩综合一区二区三区| 国产精品一区在线麻豆| 亚洲av成人一区二区三区在线播放| 日韩精品中文字幕无码一区| 亚洲一区二区三区电影| 一区二区精品在线| 亚洲日本乱码一区二区在线二产线| 日韩一区精品视频一区二区 | 国精品无码一区二区三区在线 | 中文字幕一区二区人妻性色| 99久久精品国产高清一区二区| 亚洲永久无码3D动漫一区| 久久精品一区二区免费看| 一区二区视频在线播放| 蜜臀AV一区二区| 精品国产一区二区麻豆| 精品一区二区三区无码视频| 一区二区手机视频| 中文字幕一区日韩在线视频| 久久久精品人妻一区亚美研究所 | 日本强伦姧人妻一区二区| 久久se精品一区二区影院| 国产一区二区内射最近更新| 亚洲福利视频一区二区三区| 成人无号精品一区二区三区 | 无码人妻精品一区二区蜜桃网站| 亚洲无码一区二区三区| 福利一区二区视频| 国产精品高清一区二区三区|