基本上我实际上需要从以下子页面读取数据 https://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48
$url = 'https://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48';
$html = file_get_contents( $url);
但它不是数据。 我也试过curl。 根本没有成功。
有什么想法吗?
答案 0 :(得分:1)
您尝试获取的网站尝试设置一些Cookie,然后告诉您使用新Cookie向同一网址发送另一个请求。 PHP的file_get_contents()
默认情况下不发送cookie,但它遵循重定向,这意味着您输入302重定向循环。
要避免此循环,您需要手动设置Cookie:
$url = 'http://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48';
$opts = array('http' => array(
'header' => 'Cookie: locale=en%3B0%3Bfalse; suggested_locale=1;',
));
$ctx = stream_context_create($opts);
$data = file_get_contents($url, false, $ctx);
变量$data
包含二进制数据,因为网站压缩了内容。所以你可能想要普通的数据:
$data = gzdecode($data);
现在您拥有可以使用json_decode()
解析的JSON编码数据。