javascript - nodejs抓取网页的问题

查看:92
本文介绍了javascript - nodejs抓取网页的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我准备抓用nodejs抓取下面这个网站的所有新闻, 按照一般的思路,是首先取得每页新闻的URL,然后取得每个新闻的URL
按照使用request把每个网址的内容取下来就OK了.

但是下面的这个网址的所有分页信息, 还有每个新闻点击进去URL都没有任何变化, 貌似都是在后台通过js实现的.
用chrome的F12的newwork的tab也查看不到有什么请求,有哪位大神能指导一下我怎么来抓取吗?

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

解决方案

1.从上一篇与下一篇的地方可以看到,click绑定的函数:boardView(1);

2.通过boadrview在页面中找到对应的函数:

function boardView(idx){
  var listNum = 10; // 목록 수 지정
  
  var resultLenDivlistNum = Math.floor(idx/listNum); // 결과 나누기 목록수
  var resultLenRestlistNum = Math.floor(idx%listNum); // 결과 나머지 목록수
  if (resultLenRestlistNum == 0){
    pageNum = resultLenDivlistNum;
  } else {
    pageNum = resultLenDivlistNum + 1;
  }
  
  cmsView.style.display = 'block';
  cmsList.style.display = 'none';
  resultViewStr = '<div class="news_view"><div 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></div>';
  resultViewStr = resultViewStr + '<div class="news_bd">'+list.artTexts[resultSearch[idx]];
  resultViewStr = resultViewStr + list.artFiles[resultSearch[idx]]+'</div>';
  resultViewStr = resultViewStr + '<div 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这个函数定义的地方。
往上找,找到了:<script src="/global/news/data.js.jsp"></script>

8.打开后看一下:http://www.samsungsem.com/glo...
好奇怪的感觉,怎么样式那么奇怪?

再右键查看源代码:
view-source:http://www.samsungsem.com/glo...
可以看到data函数是在这里定义的,而你看到的数据也在这个页面里。

这篇关于javascript - nodejs抓取网页的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆