gpt4 book ai didi

javascript请求动态html而不使用 "window.open()"

转载 作者:行者123 更新时间:2023-12-02 16:39:31 26 4
gpt4 key购买 nike

我尝试从动态网页中提取一些数据(js 在 window.onload 更改内容)。因此,单个 http get 请求不足以访问所需的数据。有没有办法做到这一点,而不需要在窗口/选项卡中渲染网页?我要发出 300 个此类数据请求,并且不希望打开 300 个选项卡。

现在我有这个:

var w = window.open(url, '_blank');
//$.get(url)
// cannot be used because the data changes dynamically after beeing loaded (via js)
var data
setTimeout(function () {
var html = w.document.documentElement
data = $("smthg", html)
w.close()
}, 500)

请注意,我需要延迟数据提取,直到出现“动态”内容。

编辑:数据位于第三方网页上。

最佳答案

我假设您尝试访问的 URL 位于不同的域中,因此您无法直接使用 AJAX。但是,如果您有可用的服务器端脚本语言,您可以做的是创建自己的代理。

例如使用 php:

<?php
// proxy.php

$content = 'File not found.';
$status = 404;

if (isset($_GET['url']) {

// use curl to get the external URL and put it in a var $content
$ch = curl_init($_GET['url']);
curl_setopt(CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);

// you could do some error handling here with the status code/content of the response
// as needed but we will skip all that for now

if ($content) {
$status = 200;
} else {
$content = 'Error';
$status = 500;
}
}

HttpResponse::status($status);
HttpResponse::setContentType('text/html');
HttpResponse::setData($content);
HttpResponse::send();

现在您可以简单地向 proxy.php 发出 ajax 请求,例如:

var data;
$.get('proxy.php', {url: url}, function (html) {
data = $("smthg", html);
});

当然,如果这些 URL 不在不同的域中,那么您可以直接使用 AJAX:

var data;
$.get(url, function (html) {
data = $("smthg", html);
});

关于javascript请求动态html而不使用 "window.open()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630513/

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