移动端url抓取懂车帝车辆
This commit is contained in:
@@ -36,10 +36,50 @@ class UsedCarCrawlSingle
|
||||
'headers' => self::DEFAULT_HEADERS,
|
||||
'timeout' => 10,
|
||||
]);
|
||||
|
||||
return (string)$response->getBody();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取移动端最终url
|
||||
*
|
||||
* @param string $url
|
||||
* @return string
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function getFinaUrl(string $url): string
|
||||
{
|
||||
$client = new Client([
|
||||
'verify' => false,
|
||||
]);
|
||||
$response = $client->get($url, [
|
||||
'allow_redirects' => ['track_redirects' => true],
|
||||
]);
|
||||
|
||||
$history = $response->getHeader('X-Guzzle-Redirect-History');
|
||||
$finalUrl = end($history);
|
||||
|
||||
$sku_id = $this->getSkuIdFromUrl($finalUrl);
|
||||
|
||||
return 'https://www.dongchedi.com/usedcar/'.$sku_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从url获取sku_id
|
||||
* @param string $url
|
||||
* @return string|null
|
||||
*/
|
||||
public function getSkuIdFromUrl(string $url): ?string
|
||||
{
|
||||
$query = parse_url($url, PHP_URL_QUERY);
|
||||
if (!$query) {
|
||||
return null;
|
||||
}
|
||||
|
||||
parse_str($query, $params);
|
||||
|
||||
return $params['sku_id'] ?? null;
|
||||
}
|
||||
|
||||
public function crawlCar(string $url){
|
||||
$html = $this->fetchHtml($url);
|
||||
if ($html === '' || str_contains($html, '404 Not Found')) {
|
||||
|
||||
Reference in New Issue
Block a user