我正在尝试监控this page并发送电子邮件,如果它发生变化。我尝试使用curl,但这不起作用,因为它似乎是使用JavaScript动态生成的。
看起来您想要检查此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请求中使用相同的请求标头并发布有效负载,以查看是否可以提取正确的数据。
抓住它,看看你发现了什么。
经过大量的时间和其他一些程序员的帮助,这里是袋装和标记的解决方案,对于在数组请求有效负载数据中查看数组的任何其他人:
$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();