get($key); if(empty($result)){ $client=new Client(); // 访问一个网页 $crawler = $client->request('GET', 'https://www.nikkei.com/news/category/markets/'); // 提取所有的段落 $paragraphs = $crawler->filter('li.cardListItem_cq2exak a')->each(function ($node) { $url="https://www.nikkei.com".str_ireplace('https://www.nikkei.com','',$node->attr('href')); $img_obj=$node->filter('div.image_i66x7bx img'); $img_url=""; if($img_obj->count()>0){ $img_url=$node->filter('div.image_i66x7bx img')->attr('src'); } if(!empty($img_url)){ return [ 'title'=>$node->filter('span.articleTitle_axocstj')->text(), 'img_url'=>$img_url, 'href'=>str_ireplace('\\','',$url) ]; } }); $paragraphs=array_filter($paragraphs); $titles = array_flip(array_column($paragraphs, 'title')); $result = []; foreach ($paragraphs as $item) { if (isset($titles[$item['title']])) { $result[] = $item; unset($titles[$item['title']]); //Remove from unique IDs to ensure only first is kept. } } $paragraphs=$result; Cache::store('redis')->set($key,$paragraphs,300); }else{ $paragraphs=$result; } return json([ 'code' => '0', 'message' => 'Request successful.', 'data' => $paragraphs, ]); } public function test(): Json { $client=new Client(); // 访问一个网页 $crawler = $client->request('GET', 'https://www.nikkei.com/news/category/markets/'); // 提取所有的段落 $paragraphs = $crawler->filter('li.cardListItem_cq2exak a')->each(function ($node) { $url="https://www.nikkei.com".str_ireplace('https://www.nikkei.com','',$node->attr('href')); $img_obj=$node->filter('div.image_i66x7bx img'); $img_url=""; if($img_obj->count()>0){ $img_url=$node->filter('div.image_i66x7bx img')->attr('src'); } if(!empty($img_url)){ return [ 'title'=>$node->filter('span.articleTitle_axocstj')->text(), 'img_url'=>$img_url, 'href'=>str_ireplace('\\','',$url) ]; } }); return json([ 'code' => '0', 'message' => 'Request successful.', 'data' => array_filter($paragraphs), ]); } /** * @throws \Exception */ public function testApi() { return json([ 'code' => '0', 'message' => 'successful' ]); } }