国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

puppeteer進階版_爬取小說站

qpal / 964人閱讀

摘要:寫爬蟲抓取頁面是不是還需要等待頁面有數據了才能抓取,那么頁面渲染的這段時間雖然不長但架不住多啊是不是可以省去呢時間要好好的利用起來基礎不太了解的可以參考我這篇簡單使用的文章使用抓取接口攔截數據這里有小伙伴就要說了我都知道接口了直接去請求不就

寫爬蟲抓取頁面是不是還需要等待頁面有數據了才能抓取,那么頁面渲染的這段時間(雖然不長但架不住多啊)是不是可以省去呢 時間要好好的利用起來 基礎不太了解的可以參考我這篇簡單使用的文章
使用puppeteer抓取接口攔截ajax數據
這里有小伙伴就要說了我都知道接口了直接去請求不就完了嗎,python,node,axios,原生的ajax那個不行啊
哈哈,那要是接口參數中有隨機數呢,有隨機時間點呢,有隨機時間戳和uuid再混起來呢
分分鐘懷疑人生
來看小說站的接口參數 咱們準備抓取的信息

圖中標記的自上往下分別是:

書籍id

要抓取的信息

接口

接口地址

接口數據

懷疑人生的時候到了,來看請求參數

首先是 post 請求

再來分析Form Data數據

bookID和user_id都沒啥事

timestamp這個參數是有一定間隔時間的時間戳

頭大的是這個, sign, 黑人問號臉(這是個啥)

翻騰了好久找了一個js文件發現了sign的由來

還是個md5加密的

那么問題來了

這個r,通過這個接口可以知道它就是bookid了

小問題是這個有固定間隔時間的timestamp怎么獲取,喜歡等待的小伙伴可以試試等等看,具體我也不知道,不過應該在10分鐘以上了

大問題是這個bookKey是個啥啊,找遍了也沒找到,我能怎么辦,我也很絕望啊,沒辦法只能放大招了


來來來
在官網的api可以看到這么幾個,哇,看到這哥幾個莫名的興奮啊,點過去再看看,就問你激動不激動
看到這里我就不多啰嗦了,直接上代碼(詳細說明在注釋里)


代碼最為關鍵的地方截圖

結果截圖

突然頓悟,都這樣了,試問頁面上還有啥是拿不到的,完整代碼 轉載請附上本文章地址
const puppeteer = require("puppeteer");
const mongodb = require("mongodb")
// mongoDB
const mongo_url = "mongodb://127.0.0.1:27017/book"
const mongoClient = mongodb.MongoClient
// 休眠函數
function sleep(second) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(" enough sleep~");
        }, second);
    })
}
// 站點地址url
var url = `http://t.shuqi.com/route.php?pagename=route.php#!/ct/cover/bid/6070553`

class Parse {
  constructor() {
    this.page = null
    this.browser = null
    this.bookMessage = {}
  }
  async init() {
    // 構造瀏覽器對象
    // 顯示瀏覽器
    this.browser = await puppeteer.launch({
      "headless": false,
    });
    // 創建頁面
    this.page = await this.browser.newPage();
    // 模擬瀏覽器信息
    const UA = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36";
    await Promise.all([
        this.page.setUserAgent(UA),
        // 允許執行js腳本
        this.page.setJavaScriptEnabled(true),
        // 頁面視口大小
        this.page.setViewport({width: 1100, height: 1080}),
    ]);
    await this.getBook()
  }
  async getBook() {
    // 打開頁面
    await this.page.goto(url);
    let page = await this.page
    // 等待頁面請求完成
    page.on("requestfinished", request => {
      // 查看所有請求地址
      // console.log(request.url)
      // ajax
      if (request.resourceType == "xhr") {
        // 匹配所需數據的請求地址
        if(request.url.indexOf("http://walden1.shuqireader.com/webapi/book/info") != -1) {
          (async () => {
            try {
              // 獲取數據并轉為json格式
              let res = await request.response();
              let result = await res.json();
              let res_data = result.data     
              // 接口數據中找到需要的數據      
              this.bookMessage = {                        
                "book_name": res_data.bookName,              
                "book_summary": res_data.desc,              
                "author_name": res_data.authorName,              
              }
              let data = await this.bookMessage
              mongoClient.connect(mongo_url, (err, db) => {                
                db.collection("shuqi_test").insert(data,(err, result) => {
                    if(err) {
                      console.log("連接失敗")
                    }
                    // 關閉瀏覽器            
                    this.browser.close()                    
                    // 關閉數據庫連接
                    db.close()
                  }
                )
              })
            } catch(err) {
              console.log(err)
            }
          })()
        }
      }
    });
  }
}

let parse = new Parse()
parse.init()

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107083.html

相關文章

  • puppeteer_node爬蟲分布式進階

    摘要:前面的文章將做爬蟲的基礎一直到部署都梳理了一遍,現在來看一下分布式的處理為什么需要分布式需要抓取的不同數據有很多,會同時開啟無頭瀏覽器去抓取,然后獲取到數據后又無厘頭的一股腦擠進數據庫無法保證同一時刻需要的數據只有一個操作在進行分布式選擇因 前面的文章將puppeteer做爬蟲的基礎一直到部署都梳理了一遍,現在來看一下分布式的處理 1) 為什么需要分布式 1. 需要抓取的不同數據...

    sutaking 評論0 收藏0
  • puppeteer的簡單使用_爬取頁面信息

    摘要:使用無頭瀏覽器做爬蟲有什么拿什么它是的一個用來操縱瀏覽器的的庫,對的你沒看錯,就是操作瀏覽器的,細思極恐啊簡單說就是瀏覽器有的它都有了當然有些功能也正在開發中可以注冊,模擬登陸,設置操作事件,執行腳本團隊對其維護,厲害了吧文檔地址安裝首先 使用chrome無頭瀏覽器做爬蟲 - 有什么拿什么 puppeteer 它是Node的一個用來操縱瀏覽器的API的庫,對的你沒看錯,就是操作瀏覽器的...

    ARGUS 評論0 收藏0
  • Koa2 + Mongo + 爬蟲 搭建 小說微信小程序(本地開發篇)

    摘要:前言根據慕課網實現電影微信公眾號前后端開發學習后的改造由于上下班期間會看會小說,但是無奈廣告太多,還要收費,于是結合課程,進行開發,并上傳到自己的微信小程序。 前言:根據慕課網 Koa2 實現電影微信公眾號前后端開發 學習后的改造 由于上下班期間會看會小說,但是無奈廣告太多,還要收費,于是結合課程,進行開發,并上傳到自己的微信小程序。 showImg(https://segment...

    Kross 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • python爬取某趣閣小說(2.0),十分鐘爬完一千六百章

    摘要:返回每個章節的集合。爬取完成,共計用了分鐘左右。判斷使用還是使用變量來存放未變化的,若下次循環與相等,說明此次請求沒有成功,,因為某些頁面本身存在錯誤沒有數據,則需要跳過。 ...

    My_Oh_My 評論0 收藏0

發表評論

0條評論

qpal

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<