關於Simple_html_dom的小應用
今天一同學給我推薦了本書,說是剛出不久,內容還不錯,是心靈雞湯類的書,於是按捺不住就像在網上下一本,可是木有資源腫麼辦。只有線上看的,作為一個準碼農,所以甭廢話了,我們得用程式碼解決問題對吧……
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超時問題
當迴圈太多時會出現超時問題,建議不要修改配置檔案
相關文章
- 關於webgl的大型應用Web
- 關於值物件的應用物件
- 關於rowid的應用
- 關於flex佈局的應用Flex
- 關於 Web 應用的 Prerender 策略Web
- 關於 Angular 應用的 Bootstrap 過程Angularboot
- 關於對DDD應用層的疑惑
- 關於web應用的static變數Web變數
- 關於openssl應用的對話 (轉)
- 關於用display:table讓元素居中的小結
- 關於 Service Worker 和 Web 應用對應關係的討論Web
- 關於前端應該知道的5個小知識前端
- 關於騰訊應用管理中心,認領應用
- 關於 SAP Fiori 應用的離線使用
- 關於Electron框架應用的安全測試框架
- 關於 KMP next 陣列的應用KMP陣列
- 關於常用應用軟體的感覺
- 關於AutoML應用於網路威脅的思考TOML
- 關於使用牆外安卓應用安卓
- 求助:關於應用設計模式設計模式
- 談談關於 iOS 的架構以及應用iOS架構
- 關於多層交換技術的綜合應用
- 一道關於Promise應用的面試題Promise面試題
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- 關於分享的小見解
- RxJS進階——關於流的理解和應用JS
- 盤點關於Java在生活中的應用!Java
- 關於VS.Net應用的圖示提取方法
- 關於 fontawesome 庫在 Spartacus 專案中的應用
- 關於Clean Architecture在android中的應用Android
- 關於單頁應用(SPA)的經驗之談
- 資訊圖:關於移動應用的趣味數字
- 關於移動應用的趣味數字–資訊圖
- 關於包(Package)應用規範的說明 (轉)Package
- 關於 Struts 1.1 Exception Handler 的應用補充 (轉)Exception
- 將圖卷積應用於關係推理卷積
- 關於輕應用,我有話要說...
- Go - 關於 protoc 工具的小疑惑Go