【问题标题】:Do I have to append the scraped data before I can extract the data?在提取数据之前是否必须附加抓取的数据?
【发布时间】:2019-03-04 04:34:24
【问题描述】:

我正在从另一个网站抓取数据。到目前为止,我一直很成功,但我正在努力解决一个问题。获取数据后,我必须将其附加到 div 中,以便使用 getElementByClassName 提取正确的数据。我还有其他方法可以做到这一点吗?我可以以某种方式将数据存储在局部变量中,然后以类似的方式提取数据吗?

$.getJSON('URL' + encodeURIComponent('websiteURL' + retrievedData.postnr) + '&callback=?', function(data) {
  $(".newHtml").append(data.contents);//Here is where I append the data so I can extract it.
  var elements = document.getElementsByClassName("The class name that I am looking for");
  for (var i = 1; i < elements.length; i++) {
    var header = elements[i].getElementsByTagName("h2")[0].textContent;
    $(".add").append(header);
    for (var x = 0; x < 3; x++) {
      var pris = elements[i].getElementsByClassName("Class name inside with certain content inside the other class")[x].textContent;
      var info = elements[i].getElementsByClassName("Class name inside with certain content inside the other class")[x].textContent;
      $(".add").append("<div class='priser'><h3 class='pris'>" + pris + "</h3>" + "<p class='info'>" + info + "</p></div>");
    }

  }
  $(".newHtml").remove();

【问题讨论】:

  • 你为什么要抓取一个网站?这合法吗?

标签: javascript jquery json web-scraping frontend


【解决方案1】:

无需将其附加到文档中。你可以create jQuery object on the fly,然后就可以使用各种DOM遍历方法提取数据了。

var myObj = $('<div />').html(data.contents);
var tragetElement = myObj.find('.someClass') 

var myObj = $('<div />').html('<span class="someClass">text</span>');
var tragetElement = myObj.find('.someClass');

console.log(tragetElement.text());
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 2022-07-26
    • 2019-04-27
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多