如何使用cheerio和node.js抓取当前正在使用的页面?

时间:2013-09-24 21:01:22

标签: node.js cheerio

所以这可能是一个令人费解的问题,但这里有:

我正在使用node.js创建一个简单的本地托管Web抓取工具。当我手动定义要在源文件中抓取的URL时,它正常工作,我现在正试图提示用户输入他们选择的URL。然后我将他们输入的URL附加到空div,理想情况下,可以使用cheerio来获取该div的内容。

不幸的是,我不知道如何解析在运行脚本的同一页面上创建的数据。任何见解都会非常受欢迎!

var cheerio = require("cheerio");

    response.write('<div id="newsStory"></div>');
    response.write("<script type='text/javascript'>var userPrompt = prompt('input a url');");
    response.write("if(userPrompt) {document.getElementById('newsStory').innerHTML = userPrompt;}");
    response.write("</script>");

    var $ = cheerio.load();

    var url = $('div#newsStory').text(); //does not work!

    var url = "http://www.cnn.com/2013/09/23/us/south-carolina-powerball-winner/"; //manually inputting a url works!

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您将浏览器端DOM与Cheerio服务器端的文档混合在一起。 div newsStory是客户端,所以你必须找到一些方法将其内容发送到服务器。

由于您熟悉Cheerio语法,因此您可以在客户端使用jQuery,其中text()方法的行为相同,您可以使用$.post()将URL发送到服务器。