刮网站|如何创建JSON文件?

时间:2017-04-19 03:42:55

标签: jquery

我刚刚开始学习抓取网站。

我正在抓的网站有一个主要的“内容”类。 Content div内部是文章,文章的标题位于<h2>标签内。

我已经想通过以下代码来引用标题。现在我想将所有标头保存在JSON文件中。如何为每个标题创建对象。显然,我的代码只是在每次迭代时替换 obj title

var title, date, img_url, permalink;
var obj = { title : "", date : "", img_url : "", permalink : ""};

        // ======== Extracting Title ================
        $('#Content').filter(function(){
            var data = $(this);
            let headers = data.find('h2');

            headers.each(function (i, el) {
                obj.title = $(el).text();
            })
        })

2 个答案:

答案 0 :(得分:2)

如果您想为每个{title: "Some title"}元素添加类似于<h2>的对象数组,那么您只需使用

const headerObjects = Array.from(document.querySelectorAll('#Content h2')).map(h2 => ({
  title: h2.textContent
}))

console.info(headerObjects)
<div id="Content">
<h2>Title 1</h2>
<p>Here's some text</p>
<h2>Title 2</h2>
<p>Some more text</p>
<h2>Last title</h2>
<p>One more paragraph</p>
</div>

参考:

答案 1 :(得分:0)

尝试以下代码,。在此代码中,当您单击“创建文件”按钮时,它将创建下载链接。该链接导致下载json文件格式化o / p。

&#13;
&#13;
var json = [];
$("h2").each(function(i) {
  var title = $(this).html();
  item = {};
  item ["title"] = title;
  json.push(item);
});

(function () {
  var textFile = null,
      makeTextFile = function (text) {
        var data = new Blob([text], {type: 'application/json'});
        if (textFile !== null) {
          window.URL.revokeObjectURL(textFile);
        }
        textFile = window.URL.createObjectURL(data);
        return textFile;
      };
  create.addEventListener('click', function () {
    var link = document.getElementById('downloadlink');
    link.href = makeTextFile(JSON.stringify(json, null, 4));
    link.style.display = 'block';
  }, false);
})();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Content">
  <h2>Title 1</h2>
  <p>Here's some text</p>
  <h2>Title 2</h2>
  <p>Some more text</p>
  <h2>Last title</h2>
  <p>One more paragraph</p>
</div>
<button id="create">Create file</button>
<a download="info.txt" id="downloadlink" style="display: none">Download</a>
&#13;
&#13;
&#13;

这是工作的jsfiddle:https://jsfiddle.net/o1kvk63o/

我认为应该可以帮到你