【问题标题】:$().html() body tag goes missing after function call函数调用后 $().html() 正文标记丢失
【发布时间】:2019-01-12 17:57:34
【问题描述】:

我正在抓取网站的源代码。

我的第一次打印打印出完整的源代码。

然后第二次打印将一个实际的 DOM 打印到控制台,但由于某种原因,文档的内容略有变化。

让我烦恼的是<body> 标签丢失了,我不知道为什么。

我刚刚意识到<head> 标签也丢失了。所以这可能是有充分理由的。

澄清:<head><body> 标记的内容一起保留在容器中。只是标签本身消失了,而不是它们的内容。

我希望将整个源代码解析为可访问的 DOM。

这是代码:

$.ajax({url: url, dataType: "text", success: function(data) { 

    console.log("data:", data);

    var htmlDocument = $("<html>").html(data)[0];

    console.log("htmlDocument:", htmlDocument);

}});

我是 JavaScript 新手,感谢您的帮助。我很想了解这个问题,但现在我真的只是希望它能够工作。

【问题讨论】:

  • 你到底想用它做什么?请详细说明用例。请注意,jQuery html() 删除了 &lt;body&gt;&lt;head&gt;
  • 我想访问 body 标签。搜索其内容。我刚刚意识到 标签也丢失了。这是为什么呢?
  • $('&lt;div&gt;').html(data);$('&lt;html&gt;').html(data);有什么区别?我希望有一份源代码的精确副本,可以作为 DOM 访问。
  • 没有必要使用&lt;html&gt;,因为您所说的只是查看内容

标签: javascript html ajax dom web-scraping


【解决方案1】:

正如查理特弗尔所说

请注意,jQuery .html() 删除了 bodyhead

试试

 $('html')[0].outerHTML

document.documentElement.outerHTML

在此处查看更多信息: How do I get the entire page's HTML with jQuery?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2011-03-19
    • 2019-03-10
    • 2012-04-17
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多