摘要:最近看到抖音那么火,心想著是不是要做個抖圖,就這樣,拖拖拉拉就開始干了。一個多月了,終于有成果了。二期會對這個爬蟲做出修改,優(yōu)化,希望能夠一次性完成所有的爬取工作。
換了新公司,沒什么時間寫博客了。最近看到抖音那么火,心想著是不是要做個“抖圖”,就這樣,拖拖拉拉就開始干了。一個多月了,終于有成果了。
準(zhǔn)備工作從某圖片網(wǎng) 爬了8w張圖片,爬的只是鏈接(因為是鏈接,所以后面出現(xiàn)一些問題)
將鏈接存到本地的mysql數(shù)據(jù)庫
用express 寫了一些接口
前端用react 做了這個滑動的交互和首頁的刷新
技術(shù)點爬圖片網(wǎng)站,我用的方法比較笨。中間經(jīng)過本地文件中轉(zhuǎn)了一下,執(zhí)行效率不是很好,為了防止對方反爬蟲,我設(shè)置了一個定時器,2秒鐘一次。爬到第二天早上還沒結(jié)束。二期會對這個爬蟲做出修改,優(yōu)化Promise,希望能夠一次性完成所有的爬取工作。
后端我用的是node,使用mysqlyi的包,拼湊一個插入語句,把所有的數(shù)據(jù)存進去。
要開始寫接口了。寫了兩個接口,一個是根據(jù)前端傳值頁數(shù)和每頁多少條,到數(shù)據(jù)庫進行分頁查詢①,記得上面提到過我爬取的都是圖片鏈接,你訪問別人cdn上的圖片,人家肯定不樂意,所以就有了防盜鏈技術(shù),當(dāng)然也就有了反防盜鏈技術(shù),我是用的node轉(zhuǎn)發(fā)圖片請求②。
前端用的是react + dva,首頁用了swiper③的插件。
技術(shù)方面難度不到,就不上github地址了。貼幾段看看就好。
① nodejs、mysql 分頁查詢
/** * @description 分頁查詢 * @param {number} pageNo 一頁多少條 * @param {number} pageSize 多少頁 */ function funcSelectImgs(pageNo, pageSize) { let promise1 = new Promise((resolve) => { let SQLSelect = `select * from girl_img_tbl limit ${(pageNo - 1) * (pageSize)}, ${pageSize};` connection.query(`${SQLSelect}`, function (error, results, fields) { if (error) throw error; let arr1 = [] results.map((item, index, arr) => { arr1.push(item.girl_img_url) }) resolve(arr1) }) }); let promise2 = new Promise((resolve) => { let SQLSelect = `select count(*) from girl_img_tbl;` connection.query(`${SQLSelect}`, function (error, results, fields) { if (error) throw error; resolve(results); }); }) return Promise.all([promise1, promise2]); }
② 為了反防盜鏈,使用nodejs轉(zhuǎn)發(fā)圖片請求,使用request庫
var options = { url: str, headers: { "Referer": "targetUrl" } }; request(options) .on("error", function (err) { console.log(err) }) .pipe(res);
③ 在react中使用swiper
if (this.swiper) { this.swiper.slideTo(0, 0) this.swiper.destroy(); this.swiper = null; } this.swiper = new Swiper(this.refs.lun, { direction: "vertical", lazy: { loadPrevNext: true, loadPrevNextAmount: 2 }, }); } ... // render方法中使用{arrImgUrls.map((urlItem, index, arr) => { return ({this.handleImgClick(urlItem)}}>) })}
剛才有提到為了反防盜鏈,我用我的nodejs服務(wù)器轉(zhuǎn)發(fā)圖片請求。我的是1M的騰訊云服務(wù)器,轉(zhuǎn)發(fā)圖片速度太慢了。昨天升級到了10M,兩天時間就要36塊錢,太貴了。
貼上鏈接吧,http://115.159.47.17:8081/ 我沒買域名,直接用的ip地址。估計明天就限速了,我就升級了兩天時間8月8號和8月9號。不過現(xiàn)在也能打開,不過會很慢。看大家需求吧,如果有喜歡的話,私信我,我看是繼續(xù)升級帶寬,還是換家服務(wù)器廠商。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96784.html
摘要:每周前端開源推薦第一期一直以來大家都覺得是一個放在根目錄的靜態(tài),這個開源庫可以讓增加動畫動態(tài)修改圖片甚至使用視頻攝像頭捕捉。體驗地址一個類似的前端框架,和不同的是更語義化。 每周前端開源推薦第一期 favico.js Make a use of your favicon with badges, images or videos 一直以來favicon.ico大家都覺得是...
閱讀 2300·2021-11-24 09:39
閱讀 2545·2021-11-22 15:24
閱讀 2984·2021-09-02 09:48
閱讀 3025·2021-07-26 22:01
閱讀 1441·2019-08-30 11:09
閱讀 1680·2019-08-29 18:47
閱讀 611·2019-08-29 15:40
閱讀 2139·2019-08-29 15:22