class HsCode {
public function curlGet($url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
return $resp;
}
public function keywordGetHsCode($keyword = '篮球') {
$page = 1;
do {
$content = $this->curlGet("https://www.hsbianma.com/Search/{$page}?keywords={$keyword}");
preg_match_all('/<tr class="result-grid">.*?<\/tr>/s', $content, $matches);
$items = array_filter(array_map(function ($tr) {
if (preg_match('/"\/Code\/(\d+)\.html".*?<td>(.*?)<\/td>/s', $tr, $match)) {
list($name, $nameEn) = preg_split('/<span.*?>/', $match[2]);
$name = trim(preg_replace('/<\/?\w+.*?>/s', '', $name));
$nameEn = trim(preg_replace('/<\/?\w+.*?>/s', '', $nameEn));
return [
'hsCode' => $match[1],
'name' => $name,
'nameEn' => $nameEn
];
}
return [];
}, $matches[0] ?: []));
$hsCode = '';
foreach ($items as $item) {
if (strtolower($item['name']) == strtolower($keyword)) {
$hsCode = $item['hsCode'];
break;
}
}
$page++;
} while (empty($hsCode) && $page <= 5);
return $hsCode;
}
}
$hsCode = (new HsCode())->keywordGetHsCode('乒乓球');
var_dump($hsCode);