From 6bdcc73ee84c8772f1af47270efceab632042395 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Fri, 28 Nov 2025 16:12:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E7=B3=8A=E6=8A=93=E5=8F=96=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/BrandSeriesService.php | 12 +++++++----- app/common/service/CrawlService.php | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/admin/service/BrandSeriesService.php b/app/admin/service/BrandSeriesService.php index 364be9d..9542378 100644 --- a/app/admin/service/BrandSeriesService.php +++ b/app/admin/service/BrandSeriesService.php @@ -328,20 +328,22 @@ class BrandSeriesService // 执行抓取 $crawlService = new CrawlService(); - //懂车帝模糊搜索返回车系地址 + //懂车帝模糊搜索返回车系地址|单个车系id抓取 $href = $crawlService->modelSearch($keyword); $seriesId = $this->extractSeriesId($href); //懂车帝车系id - if (empty($seriesId)) { //没有抓取到懂车帝系列id时,按关键词为品牌名抓取所有的系列名 - $crawlSeries = $crawlService->brandSeries($keyword); - } +// if (empty($seriesId)) { //没有抓取到懂车帝系列id时,按关键词为品牌名抓取所有的系列名 +// $crawlSeries = $crawlService->brandSeries($keyword); +// } + //按关键词为品牌名抓取所有的系列名 + $crawlSeries = $crawlService->brandSeries($keyword); if (empty($seriesId) && empty($crawlSeries)) { throw new \Exception('抓取失败,未找到该系列车型'); } $brandSerieses = []; - if(empty($seriesId) && !empty($crawlSeries)){ //关键词为品牌名时抓取所有车系的懂车帝id + if(empty($seriesId) && !empty($crawlSeries) || count($crawlSeries)>1){ //关键词为品牌名时抓取所有车系的懂车帝id $href = $crawlService->modelSearch($crawlSeries[0]); $seriesId = $this->extractSeriesId($href); //懂车帝车系id //抓取品牌与系列 diff --git a/app/common/service/CrawlService.php b/app/common/service/CrawlService.php index 53e7026..f437ba6 100644 --- a/app/common/service/CrawlService.php +++ b/app/common/service/CrawlService.php @@ -9,7 +9,7 @@ class CrawlService { public function brandSeries($brand) { - $url = "https://www.dongchedi.com/search?currTab=6&keyword=".$brand; + $url = "https://www.dongchedi.com/search?currTab=6&keyword=".$brand.'&from=search_tab_er&api_param={"en_qc":+0}'; $ql = QueryList::get($url ); $series = []; $ql->find('div.card-name')->texts()->map(function($item) use(&$series) {