json - WebScraper 和 Json 格式

标签 json node.js web-scraping cheerio

我正在尝试制作一个简单的nodeJS webscraper,但我不知道如何在 Json 文件中格式化我的结果。

我正在使用express、request、cheerio和fs。

这是我的代码:

var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app     = express();
var url = 'http://www.footmercato.net/';

  request(url, function(err, resp, body) {
      if (!err) {
        var $ = cheerio.load(body);
        var json = { title : "", article : "", date : "" };

        var article = $('.text p');
        var articleTxt = article.text();
        json.article = articleTxt;
  }

  JSON.stringify(json);

  })

  app.listen('8080');

当我启动这个程序时没有发生任何事情,它在 JSON.stringify(json);

之前工作

有人知道怎么解决吗?

最佳答案

您需要将 stringify 函数放在回调中,然后将字符串写入文件。如果该函数位于回调之外,则您要转换的 JavaScript 对象尚未创建

顺便说一句,JavaScript 对象不是 JSON。我更改了下面的定义。

request(url, function(err, resp, body) {
 if (!err) {
   var $ = cheerio.load(body);
   var jsObject = { title : "", article : "", date : "" };
   var article = $('.text p');
   var articleTxt = article.text();
   jsObject.article = articleTxt;
   var json = JSON.stringify(jsObject);
   fs.writeFileSync('path/to/file', json);

 }

关于json - WebScraper 和 Json 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589238/

相关文章:

java - 直接自引用导致循环父类(super class)问题 JSON

json - 使用 jq 按特定键分组时修改数组元素

javascript - 奇怪的异步代码行为

node.js - 在 Windows Azure 上托管的 Node.js 应用程序中存储私有(private)文件的最佳方式

python-2.7 - 使用 scrapy 递归地抓取 phpBB 论坛

python - Scrapy在爬行时不处理所有页面

javascript 意外的 token *

java - Elasticsearch JEST 日期序列化 java

node.js - {消息: “Make sure to call fetch to execute the query” but i’m using paginate in adonis/mode. js

python - 如何使用 Python 从网站中提取多个独立嵌套的 JSON 对象和键