我正尝试监视this page并发送一封更改后的电子邮件。我尝试使用curl,但是那没用,因为它似乎是用JavaScript动态生成的。
答案 0 :(得分:1)
您似乎要检查此URL,因为这是该页面获取其数据的位置:
https://api.finra.org/data/group/otcMarket/name/otcDailyList
在查看原始页面时,打开您的Chrome开发工具,然后点击“网络”标签。您会看到加载该页面的请求列表。查找对“ otcDailyList”的请求,它具有XHR类型。然后,您可以检查标头以查看所使用的请求标头和有效负载,以查看POST有效负载是什么。使用此信息,您可以使用curl模拟请求。
从我可以看到的请求有效载荷如下:
{
"quoteValues":false,
"delimiter":"|",
"limit":100000,
"sortFields":["-dailyListDatetime","+oldSymbolCode"],
"dateRangeFilters":[
{
"fieldName":"dailyListDatetime",
"startDate":"2019-04-27 00:00:00",
"endDate":"2019-04-27 23:59:59"
}
]
}
我假设您可以对其进行调整以获取所需的数据(例如调整日期)。
因此,在您的curl请求中,使用相同的请求标头并发布有效负载,以查看是否可以提取正确的数据。
破解一下,看看发现了什么。
答案 1 :(得分:0)
经过很多时间,并在其他一些程序员的帮助下,这是装袋包装和加标签的解决方案,对于正在阵列中请求载荷数据的其他人:
$RequestPayload = array(
"quoteValues" => false,
"delimiter" => "|",
"limit" => 100000,
"sortFields" => ["-dailyListDatetime","+oldSymbolCode"],
"dateRangeFilters" => [array("fieldName"=>"dailyListDatetime","startDate"=>"2019-05-21 00:00:00","endDate"=>"2019-05-21 23:59:59")],
);
$JSONEncoded = json_encode($RequestPayload);
echo "<P> JSONEncoded: <P><P> $JSONEncoded <P><P>";
$ReferLink = 'https://Website.com';
$CurlHandle = curl_init();
curl_setopt($CurlHandle, CURLOPT_URL, "https://api.Website.com");
curl_setopt($CurlHandle, CURLOPT_REFERER, $ReferLink);
curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($CurlHandle, CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($CurlHandle, CURLOPT_POST, 1);
curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($CurlHandle, CURLOPT_POSTFIELDS,json_encode($RequestPayload));
$output = curl_exec($CurlHandle);
echo "<pre>";
echo $output;
die();