2

我需要从包含列表中任何单词的 freelancer.com API 获取项目。似乎项目搜索方法or_search_query中的过滤器不起作用。

<?php

$url = 'https://www.freelancer.com/api/projects/0.1/projects/active/';
$params = array(
    'or_search_query' => 'scraper scraping scrap scrapy',
    'languages' => array('en'),
);
$params = http_build_query($params);
$params = preg_replace('/%5B[0-9]+%5D/', '%5B%5D', $params); // param[1] -> param[]
$url = $url . '?' . $params;
var_dump(urldecode($url)); // https://www.freelancer.com/api/projects/0.1/projects/active/?or_search_query=scraper scraping scrap scrapy&languages[]=en

$json = json_decode(file_get_contents($url), true);
if ($json) {
    foreach ($json['result']['projects'] as $project) {
        echo '<a href="https://www.freelancer.com/projects/' . $project['seo_url'] . '">' . $project['title'] . '</a><br />';
    }
}

这段代码给了我与“抓取”无关的工作。我究竟做错了什么?

4

1 回答 1

0

假设您正确使用 API,您何时发出 curl 请求?我没有在代码中看到它。您在 $url 变量中形成 URL,然后解码 url,然后使用json_decode来解码该信息。从那里返回什么?你能提供吗?

如果您实际上没有发出任何 curl 请求,我建议您使用库 Guzzle:http ://docs.guzzlephp.org/en/latest/它会让您在调试时更轻松。我希望您使用调试器而不是var_dumps因为这会使您更清楚。

于 2017-03-02T20:45:09.107 回答