【问题标题】:How to scrape the page one is currently on using cheerio and node.js?如何使用 Cheerio 和 node.js 抓取当前正在使用的页面?
【发布时间】:2013-09-24 21:01:22
【问题描述】:

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

我正在使用 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!

【问题讨论】:

    标签: node.js cheerio


    【解决方案1】:

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

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

    【讨论】:

    • 嘿,这是个好主意!我会尝试一下,让你知道我发现了什么。谢谢!
    猜你喜欢
    • 2018-11-11
    • 2020-09-08
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多