我打算使用PHP Simple HTML DOM 來提取這個鏈接中的鏈接
我寫的代碼如下:
$url = "https://www.technolife.ir/product-3303";
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_REFERER, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
$html_base = new simple_html_dom();
foreach($html_base->find('a') as $element) {
echo "<pre>";
print_r( $element->href );
echo "</pre>";
}
但不幸的是,我在運行時收到此錯誤:
Call to a member function find() on null
uj5u.com熱心網友回復:
https://www.technolife.ir/product-3303供應gzip壓縮的內容,即使客戶不要求壓縮,因此你只得到了一堆二進制gzip壓縮的資料,看起來像垃圾完全以simplehtmldom并使它墜毀。
幸運的是,libcurl 內置了對 gzip 解壓縮的支持,可以通過 curl_setopt($curl, CURLOPT_ENCODING, '');
也就是說,你應該在 simple_html_dom 上使用 DOMDocument,
$html_base = new DOMDocument();
@$html_base->loadHTML($str);
foreach($html_base->getElementsByTagName('a') as $element) {
echo "<pre>";
print_r( $element->getAttribute("href") );
echo "</pre>";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/403604.html
標籤:
