說到爬蟲,很多人就會想到python爬蟲,因為它確實有很大的優(yōu)點。但其實PHP也是可以用來做異步爬取數(shù)據(jù)的,下面就來給大家介紹一下使用PHP做異步爬取數(shù)據(jù)的方法。
什么是網(wǎng)絡(luò)爬蟲?
網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。傳統(tǒng)爬蟲從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當(dāng)前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。
爬蟲有什么用?
-
做為通用搜索引擎網(wǎng)頁收集器。(google,baidu)
-
做垂直搜索引擎.
-
科學(xué)研究:在線人類行為,在線社群演化,人類動力學(xué)研究,計量社會學(xué),復(fù)雜網(wǎng)絡(luò),數(shù)據(jù)挖掘,等領(lǐng)域的實證研究都需要大量數(shù)據(jù),網(wǎng)絡(luò)爬蟲是收集相關(guān)數(shù)據(jù)的利器。
-
偷窺,hacking,發(fā)垃圾郵件……
QueryList 簡介與特性
QueryList是一套簡潔、優(yōu)雅、可擴展的PHP采集工具(爬蟲),基于phpQuery。
特性:
-
擁有與jQuery完全相同的CSS3 DOM選擇器
-
擁有與jQuery完全相同的DOM操作API
-
擁有通用的列表采集方案
-
擁有強大的HTTP請求套件,輕松實現(xiàn)如:模擬登陸、偽造瀏覽器、HTTP代理等意復(fù)雜的網(wǎng)絡(luò)請求
-
擁有亂碼解決方案
-
擁有強大的內(nèi)容過濾功能,可使用jQuey選擇器來過濾內(nèi)容
-
擁有高度的模塊化設(shè)計,擴展性強
-
擁有富有表現(xiàn)力的API
-
擁有高質(zhì)量文檔
-
擁有豐富的插件
-
擁有專業(yè)的問答社區(qū)和交流群
通過插件可以輕松實現(xiàn)諸如:
-
多線程采集
-
圖片本地化
-
模擬瀏覽器行為,如:提交Form表單
-
網(wǎng)絡(luò)爬蟲
環(huán)境要求
PHP >= 7.0
如果你的PHP版本還停留在PHP5,或者不會使用Composer,你可以選擇使用QueryList3,QueryList3支持php5.3以及手動安裝。 QueryList3 文檔:http://v3.querylist.cc
安裝
通過Composer安裝:
composer require jaeger/querylist
使用
元素操作
采集「昵圖網(wǎng)」所有圖片地址
QueryList::get('http://www.nipic.com')->find('img')->attrs('src');
采集百度搜索結(jié)果
$ql = QueryList::get('http://www.baidu.com/s?wd=QueryList'); $ql->find('title')->text(); // 獲取網(wǎng)站標(biāo)題 $ql->find('meta[name=keywords]')->content; // 獲取網(wǎng)站頭部關(guān)鍵詞 $ql->find('h3>a')->texts(); //獲取搜索結(jié)果標(biāo)題列表 $ql->find('h3>a')->attrs('href'); //獲取搜索結(jié)果鏈接列表 $ql->find('img')->src; //獲取第一張圖片的鏈接地址 $ql->find('img:eq(1)')->src; //獲取第二張圖片的鏈接地址 $ql->find('img')->eq(2)->src; //獲取第三張圖片的鏈接地址 // 遍歷所有圖片 $ql->find('img')->map(function($img){ echo $img->alt; //打印圖片的alt屬性 });