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