【问题标题】:Scraping website | How do I create a JSON file?刮网站 |如何创建 JSON 文件?
【发布时间】:2017-04-19 03:42:55
【问题描述】:

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

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

我想办法用以下代码引用标题。现在我想将所有标题保存在一个 JSON 文件中。如何为每个标题创建对象。显然,我下面的代码只是用每次迭代替换了 objtitle

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();
            })
        })

【问题讨论】:

    标签: jquery


    【解决方案1】:

    如果你想要一个类似于{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>

    参考:

    【讨论】:

      【解决方案2】:

      试试下面的代码,在这段代码中,当你点击「创建文件」按钮时,它会创建下载链接。该链接导致下载 o/p 格式的 json 文件。

      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);
      })();
      <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>

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

      我觉得应该对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-08
        • 1970-01-01
        • 2012-10-08
        • 2020-09-13
        • 1970-01-01
        • 2018-12-19
        • 1970-01-01
        • 2018-05-16
        相关资源
        最近更新 更多