前言:
來了個任務說要做個電影網站,要寫個殼,數據直接從別人那扒。行吧!那就要學習下PHP爬蟲了。占個博客,以后補充。http://study.querylist.cc/archives/6/
之前開發抓取網頁上的東西,無非就是curl+正則。用curl去請求所要扒取的頁面,然后通過正則匹配去提取你所需要的內容。
但是查了下現在PHP爬蟲可以通過使用QueryList來實現。可以通過CSS的DOM選擇器來實現。
特性:
- 擁有與jQuery完全相同的CSS3 DOM選擇器
- 擁有與jQuery完全相同的DOM操作API
- 擁有通用的列表采集方案
- 擁有強大的HTTP請求套件,輕松實現如:模擬登陸、偽造瀏覽器、HTTP代理等意復雜的網絡請求
- 擁有亂碼解決方案
- 擁有強大的內容過濾功能,可使用jQuey選擇器來過濾內容
- 擁有高度的模塊化設計,擴展性強
- 擁有富有表現力的API
- 擁有高質量文檔
- 擁有豐富的插件
- 擁有專業的問答社區和交流群
內容:
因為要做一個電影網站,所以這次利用QueryList來爬取電影網資源,這次爬取的是——玩的嗨TV, 網址:http://tv.wandhi.com/movielist/all/3.html。
首先,選取這網站主要是它是個解析站,去破解各大網站的電影資源供給觀看,建站也比較簡易,沒有啥限制防盜鏈啥的。當然所能爬取到的資源也比較少,也主要是電影播放資源豐富吧。
主要爬取....(采集好像比較好聽點)。本次主要采集了玩的嗨TV的電影列表頁面和電影播放頁面。
安裝:
安裝QueryList相當的簡單,打開項目目錄,運行compose命令進行安裝
composer require jaeger/guerylist
(注意點 PHP版本需要在7.0以上)
在控制器中引入相應的類就可以開始使用了
use QL\QueryList;
使用:
先貼個小代碼
/** * 采集電影首頁 */ public function film_list($page = 1){ $path = '/movielist/all/'.$page.'.html'; $rules = [ 'link' => ['.lazy', 'href'], 'img' => ['.title>h5>a', 'src'], 'name' => ['.lazy', 'title'], 'score' => ['.score', 'html'], 'actor' => ['.subtitle', 'html'], ]; $data = QueryList::Query($this->url . $path, $rules)->data; return $data; }
從代碼中可以很清楚的看出,使用QueryList的Query方法,參數為采集地址和采集規則。
采集地址就是你所要采集頁面的網址。
采集規則是一個數組,結構“名字”=>[“css DOM選擇器”,‘DOM屬性’];
這樣就可以采集到頁面數據。
1、電影列表頁面
頁面結構如下:
爬取結果:
2、電影播放頁面
頁面結構:
主要采集這兩個數據進行拼接就能獲得視頻的播放地址。
采集結果:
對數據進行拼接就可以獲得視頻播放地址。
總結:這次采集相對簡單。QueryList還有提供了許多深層的方法,后面可以在進行測試使用。主要是進行了簡易的采集,獲取了所需的數據,電影網也足夠了
結語:離職的最后一天,你會做些什么?