我需要从freelancer.com应用程序接口中获取项目,其中包含列表中的任何单词。project search method中的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 />';
}
}这段代码给了我一些与“抓取”无关的工作。我做错了什么?
发布于 2017-03-03 04:45:09
假设您正确地使用了API,那么什么时候发出curl请求?我在代码中看不到它。在$url变量中形成URL,然后解码该url,然后使用json_decode解码该信息。从那里返回的是什么?你能提供它吗?
如果您实际上没有发出任何curl请求,我建议您使用库Guzzle:http://docs.guzzlephp.org/en/latest/,它将使您的调试工作变得更容易。我希望您使用的是调试器而不是var_dumps,因为这会让您更清楚。
https://stackoverflow.com/questions/42564947
复制相似问题