首頁  >  問答  >  主體

javascript - nodejs抓取網頁的問題

我準備抓用nodejs抓取下面這個網站的所有新聞, 按照一般的思路,是首先取得每頁新聞的URL,然後取得每個新聞的URL
按照使用request把每個網址的內容取下來就OK了.

但是下面的這個網址的所有分頁資訊, 還有每個新聞點擊進去URL都沒有任何變化, 貌似都是在後台通過js實現的.
用chrome的F12的newwork的tab也查看不到有什麼請求,有哪位大神能指導一下我怎麼來抓取嗎?

http://www.xxxxxxxxx.com/glob...

阿神阿神2734 天前632

全部回覆(2)我來回復

  • 阿神

    阿神2017-05-16 13:45:09

    1.從上一篇與下一篇的地方可以看到,click綁定的函數:boardView(1);

    2.透過boadrview在頁面中找到對應的函數:

    function boardView(idx){
      var listNum = 10; // 목록 수 지정
      
      var resultLenplistNum = Math.floor(idx/listNum); // 결과 나누기 목록수
      var resultLenRestlistNum = Math.floor(idx%listNum); // 결과 나머지 목록수
      if (resultLenRestlistNum == 0){
        pageNum = resultLenplistNum;
      } else {
        pageNum = resultLenplistNum + 1;
      }
      
      cmsView.style.display = 'block';
      cmsList.style.display = 'none';
      resultViewStr = '<p class="news_view"><p class="news_hd">';
      resultViewStr = resultViewStr + '<strong>'+list.artCatTitles[resultSearch[idx]] +'</strong>';
      resultViewStr = resultViewStr + '<p>'+list.artTitles[resultSearch[idx]]+'</p>';
      resultViewStr = resultViewStr + '<span>'+list.artTimes[resultSearch[idx]]+'</span></p>';
      resultViewStr = resultViewStr + '<p class="news_bd">'+list.artTexts[resultSearch[idx]];
      resultViewStr = resultViewStr + list.artFiles[resultSearch[idx]]+'</p>';
      resultViewStr = resultViewStr + '<p class="news_link"><ul>';
      resultViewStr = resultViewStr + '<li><strong><span></span>';
    

    .........

    3.看到資料來自於list這個變量,再尋找list

    4.在1739行看到:

    var artId = "";
    var catId = "se14_24";
    var tplId = "";
    list = new jsList();
    list.cmsInit(catId, artId, tplId, new data()); // list 객체 생성
    

    5.呼叫了一個建構子:jsList()找到對應的程式碼在這裡:http://www.samsungsem.com/js/...

    6 看回步驟2的程式碼:list.artTitles-->這些資料是透過jsList的cmsInit方法設定的,而cmsInit中:

    function cmsInit(catId, artId, tplId, data) {
    
        this.artIds = data.artIds;
        this.artCatTitles = data.artCatTitles;
        this.artTitles = data.artTitles;
        this.artUrls = data.artUrls;
        this.artTimes = data.artTimes;
        this.artImgs = data.artImgs;
        this.artTexts = data.artTexts;
        this.artTexts2 = data.artTexts2;
        this.artKeywords = data.artKeywords;
        this.artFiles = data.artFiles;
    

    ...
    的資料來自第四個參數data

    7.再看第4步的傳的data是new data()
    於是,我們找到data這個函數定義的地方。
    往上找,找到了:

    8.打開後看一下:http://www.samsungsem.com/glo...
    好奇怪的感覺,怎麼樣式那麼奇怪?

    再右鍵查看原始程式碼:
    view-source:http://www.samsungsem.com/glo...
    可以看到data函數是在這裡定義的,而你看到的資料也在這個頁面裡。

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:45:09

    多謝回答,我先去看看去.....

    基本上看明白了,還有一點不是很懂的地方再慢慢去看,多謝了..

    回覆
    0
  • 取消回覆