成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

抖圖 一期

yy736044583 / 869人閱讀

摘要:最近看到抖音那么火,心想著是不是要做個(gè)抖圖,就這樣,拖拖拉拉就開(kāi)始干了。一個(gè)多月了,終于有成果了。二期會(huì)對(duì)這個(gè)爬蟲(chóng)做出修改,優(yōu)化,希望能夠一次性完成所有的爬取工作。

換了新公司,沒(méi)什么時(shí)間寫博客了。最近看到抖音那么火,心想著是不是要做個(gè)“抖圖”,就這樣,拖拖拉拉就開(kāi)始干了。一個(gè)多月了,終于有成果了。

準(zhǔn)備工作

從某圖片網(wǎng) 爬了8w張圖片,爬的只是鏈接(因?yàn)槭擎溄樱院竺娉霈F(xiàn)一些問(wèn)題)

將鏈接存到本地的mysql數(shù)據(jù)庫(kù)

用express 寫了一些接口

前端用react 做了這個(gè)滑動(dòng)的交互和首頁(yè)的刷新

技術(shù)點(diǎn)

爬圖片網(wǎng)站,我用的方法比較笨。中間經(jīng)過(guò)本地文件中轉(zhuǎn)了一下,執(zhí)行效率不是很好,為了防止對(duì)方反爬蟲(chóng),我設(shè)置了一個(gè)定時(shí)器,2秒鐘一次。爬到第二天早上還沒(méi)結(jié)束。二期會(huì)對(duì)這個(gè)爬蟲(chóng)做出修改,優(yōu)化Promise,希望能夠一次性完成所有的爬取工作。

后端我用的是node,使用mysqlyi的包,拼湊一個(gè)插入語(yǔ)句,把所有的數(shù)據(jù)存進(jìn)去。

要開(kāi)始寫接口了。寫了兩個(gè)接口,一個(gè)是根據(jù)前端傳值頁(yè)數(shù)和每頁(yè)多少條,到數(shù)據(jù)庫(kù)進(jìn)行分頁(yè)查詢①,記得上面提到過(guò)我爬取的都是圖片鏈接,你訪問(wèn)別人cdn上的圖片,人家肯定不樂(lè)意,所以就有了防盜鏈技術(shù),當(dāng)然也就有了反防盜鏈技術(shù),我是用的node轉(zhuǎn)發(fā)圖片請(qǐng)求②。

前端用的是react + dva,首頁(yè)用了swiper③的插件。

技術(shù)方面難度不到,就不上github地址了。貼幾段看看就好。

① nodejs、mysql 分頁(yè)查詢

/**
 * @description 分頁(yè)查詢
 * @param {number} pageNo 一頁(yè)多少條
 * @param {number} pageSize 多少頁(yè)
 */
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ā)圖片請(qǐng)求,使用request庫(kù)

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ā)圖片請(qǐng)求。我的是1M的騰訊云服務(wù)器,轉(zhuǎn)發(fā)圖片速度太慢了。昨天升級(jí)到了10M,兩天時(shí)間就要36塊錢,太貴了。

貼上鏈接吧,http://115.159.47.17:8081/ 我沒(méi)買域名,直接用的ip地址。估計(jì)明天就限速了,我就升級(jí)了兩天時(shí)間8月8號(hào)和8月9號(hào)。不過(guò)現(xiàn)在也能打開(kāi),不過(guò)會(huì)很慢??创蠹倚枨蟀桑绻邢矚g的話,私信我,我看是繼續(xù)升級(jí)帶寬,還是換家服務(wù)器廠商。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96784.html

相關(guān)文章

  • 每周前端開(kāi)源推薦第一期

    摘要:每周前端開(kāi)源推薦第一期一直以來(lái)大家都覺(jué)得是一個(gè)放在根目錄的靜態(tài),這個(gè)開(kāi)源庫(kù)可以讓增加動(dòng)畫動(dòng)態(tài)修改圖片甚至使用視頻攝像頭捕捉。體驗(yàn)地址一個(gè)類似的前端框架,和不同的是更語(yǔ)義化。 每周前端開(kāi)源推薦第一期 favico.js Make a use of your favicon with badges, images or videos 一直以來(lái)favicon.ico大家都覺(jué)得是...

    浠ラ箍 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<