如何使用jQuery解析此HTML

How to parse this HTML using jQuery?

本文关键字:HTML 何使用 jQuery      更新时间:2023-09-26
在过去的

2 个小时里试图弄清楚这一点。我从 AJAX 请求中以字符串形式返回了这个 html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Preview</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="author" content="Connected Ventures LLC. Copyright 1999-2010." />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.ui.js"></script>
    <script type="text/javascript" src="js/article.js"></script>
    <link href="/css/global.css" rel="stylesheet" type="text/css" />
    <link href="/css/article.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    html, body { background: #fff; color: #000; }
    </style>
</head>
<body class="the_article">
        <p>s</p></body>
</html>

我需要在正文标签之间获取内容。我已经尝试过这个,这是在另一个关于通过jQuery解析html的SO问题中提出的:

$(ajax_response).find('body.the_article').html();

没用。即使在添加:

dataType: 'html'

作为 AJAX 请求参数。然后我尝试使用正则表达式解析它:

ajax_response.match(/<body class="the_article">.*?<'/body>/); 

它只是提醒空。知道我如何获得身体内容吗?

您的 REGEX 失败,因为字符串是多行的,并且.通配符匹配除空格字符之外的所有字符,因此,例如,开始body标签和正文内容之后的换行符会破坏模式。

使用 ['s'S] 而不是 .(字面意思是允许非空格和空格字符)

/<body class="the_article">['s'S]*?<'/body>/

[编辑] - 作为对评论的响应,要捕获不包括其标签的正文内容,请将内容捕获为子组:

var body = response.match(/<body class="the_article">(['s'S]*?)(?=<'/body>)/);
console.log(body[1]); //body content, not including tag

另请注意,我们将结束 body 标签指定为前瞻,因为我们根本不需要匹配它,只需锚定到它即可。(JS不支持后视,没有像我写的模拟,所以我们别无选择,只能捕获开头的身体标签)。

你可以让 dom 为你做这项工作。使用 document.write 在 iframe 中注入代码,然后访问 frame.document.body.innerHTML 属性。