0

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

我正在使用 node.js 创建一个简单的、本地托管的网络爬虫。当我手动定义要在源文件中抓取的 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!
4

1 回答 1

1

您遇到的问题是将浏览器端 DOM 与 Cheerio 具有服务器端的文档混合在一起。divnewsStory是客户端的,因此您必须找到某种方法将其内容发送到服务器。

由于您熟悉 Cheerio 语法,您可以在客户端使用 jQuery,该text()方法的作用相同,您可以使用它$.post()来将 URL 发送到服务器。

于 2013-09-24T22:41:13.553 回答