Я создал сценарий CURL, который отправляет некоторые параметры на другой мой сайт для поиска и отображения результатов в JSON с
curl "http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch" -d '{"request": {"url":"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA","callback":"parse"},"spider_name": "friendsearch"}'
Он работает хорошо, дайте мне массив JSON, например
{"status": "ok", "items": [{"fullname": ["Robert June"], "current_street": "Address, WA 00000", "previous_addresses": ["Address1", "Address2", "Address3", "Address4", "Address5"], "cellphones": ["(000) 000-0001", "(000) 000-0002"], "landlines": ["(000) 000-0001", "(000) 000-0002"], "emails": ["xxx@xxx.com", "xxx@xxx.com"], "url": "https://www.example.com/results?name=Robert%20June&citystatezip=Seattle%2CWA&rid=0x0"}], "items_dropped": [], "stats": {"crawlera/delay/reset_backoff": 3, "crawlera/request": 3, "crawlera/request/method/GET": 3, "crawlera/response": 3, "crawlera/response/banned": 1, "crawlera/response/error": 1, "crawlera/response/error/banned": 1, "crawlera/response/status/200": 2, "crawlera/response/status/503": 1, "downloader/request_bytes": 1481, "downloader/request_count": 3, "downloader/request_method_count/GET": 3, "downloader/response_bytes": 16123, "downloader/response_count": 3, "downloader/response_status_count/200": 2, "downloader/response_status_count/503": 1, "elapsed_time_seconds": 68.329858, "finish_reason": "finished", "finish_time": "2020-05-06 22:18:18", "item_scraped_count": 1, "log_count/DEBUG": 4, "log_count/INFO": 12, "memusage/max": 59998208, "memusage/startup": 59998208, "request_depth_max": 1, "response_received_count": 2, "retry/count": 1, "retry/reason_count/503 Service Unavailable": 1, "scheduler/dequeued": 3, "scheduler/dequeued/memory": 3, "scheduler/enqueued": 3, "scheduler/enqueued/memory": 3, "start_time": "2020-05-06 22:17:09"}, "spider_name": "friendsearch"}
Моя цель - вызвать этот сценарий curl через PHP и получить результаты на веб-странице и извлечь имя, адрес, предыдущий адрес, телефон и стационарный телефон. Я пробовал несколько способов и вызывая curl, как на . Как отобразить результат cURL в PHP? , но не смог получить результаты и потерпел неудачу.
Я пробовал с
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"request\": {\"url\":\"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA\",\"callback\":\"parse\"},\"spider_name\": \"friendsearch\"}");
$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
Но это дает
array(3) { ["status"]=> string(5) "error" ["message"]=> string(117) "Invalid JSON in POST body. 1:33: Error: Unexpected text after end of JSON value | At line 1, column 33, offset 33" ["code"]=> int(400) }
Есть идеи, пожалуйста?