获取API:从http响应中获取标题,关键字和正文

时间:2015-08-25 17:24:28

标签: javascript web-scraping

我想知道使用fetch api(Is there a way to not send cookies when making an XMLHttpRequest on the same origin?

从responseText获取用户可以看到的标题,关键字和内容的最佳方式是什么?

目前,我使用正则表达式从响应文本中获取标题,例如:

x = DOT_PRODUCT(A(1,:), B(:,1))  ! Scalar result, intrinsic assignment allowed.

要获取关键字元标记中的内容,我需要使用几个正则表达式。

为了让用户看到内容,我们不需要像script,div等标签,我们也不需要脚本标签之间的文本。这只是为了获得在响应主体中有意义的单词。

我认为(也就是各种stackoverflow帖子)使用正则表达式这不是正确的方法。有什么可以替代?

1 个答案:

答案 0 :(得分:3)

正如zzzzBov所述,您可以使用浏览器的DOMParser API实现来解析response.text() fetch请求的<!DOCTYPE html> <html> <head> <title>This is the page title</title> <meta charset="UTF-8"> <meta name="description" content="Free Web Help"> <meta name="keywords" content="HTML,CSS,XML,JavaScript"> <meta charset="utf-8"> <script> fetch("https://dl.dropboxusercontent.com/u/76726218/so.html") .then(function(response) { return (response.text()); }) .then(function(responseText) { var parsedResponse = (new window.DOMParser()).parseFromString(responseText, "text/html"); document.getElementById("title").innerHTML = "Title: " + parsedResponse.title; document.getElementById("keywords").innerHTML = "Keywords: " + parsedResponse.getElementsByName("keywords")[0].getAttribute("content"); document.getElementById("visibleText").innerHTML = "Visible Text: " + parsedResponse.getElementsByTagName("body")[0].textContent; }); </script> </head> <body> <div>This text is visible to the user.</div> <div>So <i>is</i> <b>this</b>.</div> <hr> <b>Results:</b> <ul id="results"> <li id="title"></li> <li id="keywords"></li> <li id="visibleText"></li> </ul> </body> </html>。这是一个为自己发送此类请求并解析标题,关键字和正文文本的示例:

EbeanServer.createUpdate(...)

我在Fetch APIUsing FetchFetch basic concepts上找到了Mozilla的文档。