標籤:com images pass 定義 技術 close 網上 end href
目標:利用PHP解決網站列表內容抓取
描述:在群裡看到小夥伴問到關於抓取網站列表內容,我就想起了當時工作關於文章採集的問題,但是後面想想又不對,這是列表抓取,於是就想起了大神們經常說的說的“爬蟲”,我想一定可以解決小夥伴的問題,因為是php小白,所以在網上找了很多爬蟲的寫法,但是太長了不想看,受個別啟發看到了fopen()方法,那麼這個方法是幹嘛的,尋找得出“把指定檔案或者url資源綁定到資源流上”,額 好像不錯,就看開始找流的相關用法,看到stream_get_contents(),方法定義是這樣的“把資源流轉化成字串”;這下明白,利用他們就可以解決頁面抓取了,不過不知道是自己能力問題還是什麼發現,效率不是很高呢,測試500個連結10000個資料耗時接近10分鐘;
代碼:
<?phpdefine("URL", "http://www.zcy.gov.cn/search?shopId=6&pageNo=");$start_time = microtime(true);$array = Array();echo ‘<ul class="view-mode-thumb">‘;for($index = 1; $index <= 5; $index++){ $url = URL.$index; $fp = fopen($url, ‘r‘); $all_Str = stream_get_contents($fp, -1, -1); // $len = strlen($all_Str); $preg =‘/<li class="product\s*\w*" style="\s*\w*\s*">.*?<\/li>/s‘; $int = @preg_match_all($preg, $all_Str, $arr); $array = array_merge($array, $arr[0]);}foreach ($array as $key => $value) { # code... echo $value;}echo ‘</ul>‘;$end_time = microtime(true);echo "<script>console.log(‘檔案數目:".count($array)." 耗用時間:".($end_time-$start_time)."s‘)</script>";// fpassthru($fp);fclose($fp);exit();?>
:
說明:由於個人能力問題,寫法上可能不是很完善,望見諒!
PHP爬蟲抓取