gpt4 book ai didi

javascript - 如何强制在解析html文件时不发送其他请求?

转载 作者:行者123 更新时间:2023-12-03 00:22:08 42 4
gpt4 key购买 nike

我正在编写一个 Chrome 扩展程序,它将 GET 请求发送到网站,并开始抓取作为响应返回的 .html 文件。在查看 chrome DevTool 中的网络部分时,我发现 html 发送了很多无用的(对我来说)请求,因为它们是网页逻辑的一部分。有没有一种方法可以按原样读取和解析 html 文件,而无需创建所有这些间接请求?另一个请求的发起者是这一行(正如 chrome 建议的那样):

htmlObject.innerHTML = xhr.responseText;

这是我正在运行的与此问题相关的代码部分:

function makeCall(word) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = processResponse(xhr);
xhr.open("GET", 'https://school.morfix.co.il/' + word, true);
xhr.send(null);
}
function processResponse(xhr) {
return function(){
if (xhr.readyState == XMLHttpRequest.DONE) {
var htmlObject = document.createElement('div');
htmlObject.innerHTML = xhr.responseText;
var translations = htmlObject.getElementsByClassName("normal_translation_div");
for (var i=0; i< translations.length; i++){
var trans = translations[i].innerHTML;
console.log(trans.replace(/<span class=\"clearOutputLanguageMeaningsString\">; <\/span>/g, ";"));
}
}
}
}

最佳答案

尝试访问xhr.responseXML而不是 responseText。它应该为您提供一个可以执行查询的文档。

如果这不起作用,您可以使用 DOM Parser 而不是创建 DOM 节点。解析响应,如下所示:

const parser = new DOMParser()
const parsedDoc = parser.parseFromString(xhr.responseText, 'text/html')

// now you can use the parsedDoc like a regular document
var translations = parsedDoc.getElementsByClassName("...")

关于javascript - 如何强制在解析html文件时不发送其他请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54270860/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com