標籤:http 使用 os 檔案 資料 io for html
Web Crawler, 也時也稱scrapers,即網路爬蟲,用於自動搜尋internet並從中提取 想要的內容。互連網的發展離不開它們。爬蟲是搜尋引擎的核心,通過智能演算法發現符合 你輸入的關鍵字的網頁。
Google網路爬蟲會進入你的網域名稱,然後掃描你網站的所有網頁,從中析取網頁標題,描述, 關鍵字和連結 - 然後把這些的評價返回給Google HQ,把內容存放至海量的資料庫中、
今天,我很高興告訴你怎麼做自己的爬蟲 -- 它並不對整個互連網進行搜尋,只是對指定的 一個網址擷取所有連結和資訊[譯:我稍微根據應用修改了例子,改成擷取電視節目表]。
一般地,你應該確保你在爬蟲前已經獲得授權,因為那真的是一個灰色的地帶。就如我說過 互連網離不開這些爬蟲,對於理解它們是如何工作,如何建立的是一件很重要的事。
為了讓實現更簡單,我們使用最流行的網路程式設計語言--PHP.不用怕你不懂PHP--我將告訴你 示範每一步操作,並解釋是用來做什麼的。我假定你已經瞭解HTML,並知道如何在HTML文檔中 加連結和圖片。
你需要有一個伺服器運行PHP指令碼。建議你使用AppServ。
入門
我們使用一個輔助庫Simple HTML DOM。這個庫用於便捷地遍曆HTML文檔。
首先,我們測試環境是否正常。建立一個.php檔案。並把下面代碼拷貝至伺服器www檔案夾。
<?php include_once(‘simple_html_dom.php‘); phpinfo();?>
第1行代碼<?php告訴伺服器使用PHP語言。這對伺服器如何解析是十分重要的。第二行代碼是包含 我們輔助庫Simple HTML DOM。最後phpinfo()列印出PHP當前的配置資訊,用於查看環境是否正常。要注意所有PHP語句都要以;結尾。初學者最常見的一個錯誤就是忘記寫分號,結果輸出空白頁。
接下來,我們把phpinfo替換成我們的爬蟲代碼。我們的任務是從一個電視節目預告的網站擷取節目表。代碼如下:
<? include_once(‘simple_html_dom.php‘); $domain = "http://epg.tvsou.com"; $target_url = "http://epg.tvsou.com/programys/TV_1/Channel_1/W4.htm"; $html = new simple_html_dom(); $html->load_file($target_url); // 尋找channel $channels = array(); $channels[‘CCTV-1‘] = $target_url; foreach($html->find(‘div[class=listmenu2] a‘) as $post) { $channels[$post->innertext] = $domain.$post->href; }?>
首先,我們通過$target_url指示抓取的地址,通過執行個體化simple_html_dom對象,以load_file載入指定地址內容。最後,調用find提取想要的內容。find的文法與css選擇子很類似。上面代碼 擷取節目的頻道串連,由於頻道連結是class=listmenu2的div下的連結,所以我們把它存放在數組中,並通過連結的文本(即頻道名作為索引)
原文連結:http://scriptogr.am/bee/post/build-basic-web-crawler-pull-information-website