如何使用curl监视困难的网页

问题描述 投票:-1回答:2

我正在尝试监控this page并发送电子邮件,如果它发生变化。我尝试使用curl,但这不起作用,因为它似乎是使用JavaScript动态生成的。

javascript php web curl monitor
2个回答
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请求中使用相同的请求标头并发布有效负载,以查看是否可以提取正确的数据。

抓住它,看看你发现了什么。


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();
© www.soinside.com 2019 - 2024. All rights reserved.