如何从https://www.fiverr.com/中删除数据

时间:2015-01-20 12:49:34

标签: php curl

我需要从https://www.fiverr.com/

中删除数据

基本上我实际上需要从以下子页面读取数据 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。 根本没有成功。

有什么想法吗?

1 个答案:

答案 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编码数据。