關於Simple_html_dom的小應用

weixin_33766168發表於2016-04-13

  今天一同學給我推薦了本書,說是剛出不久,內容還不錯,是心靈雞湯類的書,於是按捺不住就像在網上下一本,可是木有資源腫麼辦。只有線上看的,作為一個準碼農,所以甭廢話了,我們得用程式碼解決問題對吧……

  1.工欲善其事必先利其器

  首先你得有個工具用吧,別想我之前似得抓個網頁,就寫了好多的$pattern去挨個匹配標籤,作為偽程式設計師那哪行啊,對吧,我們得學著它Simple_html_dom

專門解析HTML文件的一東西,超好用的哦~。Simple_html_dom是什麼東西在我們部落格園上就有怎麼用的部落格,在這不做贅述。

  2.程式碼詳解

  啥也甭說,還是程式碼說話給力,以下是抓去新浪的小說為例。

  (1)首先得引入檔案吧

    include"simple_html_dom.php";

  (2)我們這抓小說比較簡單,深度就一層,不涉及到什麼圖的深搜廣搜,你只要觀察URL的規律即可

    $url="http://vip.book.sina.com.cn/chapter/220331/2143";//用for迴圈加東西就是了

  (3)如果for迴圈的次數太多會報錯:超時提醒。甭擔心這不是我們的錯,這是配置檔案的錯,我們加上這句話就OK了

    ini_set('max_execution_time', '100');

  (4)例項化Simple_html_dom

    $html=new simple_html_dom();

  (5)然後就是for迴圈生成一個個的URL然後提取內容了主要用到下面的東西  

    //從URL載入
$html->load_file($url_temp);

    //查詢class為mainContent的div
$title=$html->find("div[class=mainContent] h1",0);

    //收集正文
$content=$html->find("div[class=mainContent] div[class=contTxt1]",0);

  (6)適當的用正則控制以下格式

    //換行
$content=preg_replace($pattern,"\r\n",$content);
//加空格
$content=preg_replace($pattern1," ",$content);

  (7)當然少不了他了(去除html標籤)

    $title=strip_tags($title);
$content=strip_tags($content);

  (8)寫入檔案即可

  (9)恭喜你,小說抓取成功。

3.主要用到的技術

   (1)對php的熟練應用

   (2)掌握正規表示式。

   (3)主要是Simple_html_dom.php的使用

   (4)還得注意php超時問題

  當迴圈太多時會出現超時問題,建議不要修改配置檔案

相關文章