国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

QueryList 4.0 簡(jiǎn)潔、優(yōu)雅、可擴(kuò)展的PHP采集工具(爬蟲)

Astrian / 2404人閱讀

QueryList 簡(jiǎn)介

QueryList是一套簡(jiǎn)潔、優(yōu)雅、可擴(kuò)展的PHP采集工具(爬蟲),基于phpQuery。

特性

擁有與jQuery完全相同的CSS3 DOM選擇器

擁有與jQuery完全相同的DOM操作API

擁有通用的列表采集方案

擁有強(qiáng)大的HTTP請(qǐng)求套件,輕松實(shí)現(xiàn)如:模擬登陸、偽造瀏覽器、HTTP代理等意復(fù)雜的網(wǎng)絡(luò)請(qǐng)求

擁有亂碼解決方案

擁有強(qiáng)大的內(nèi)容過濾功能,可使用jQuey選擇器來過濾內(nèi)容

擁有高度的模塊化設(shè)計(jì),擴(kuò)展性強(qiáng)

擁有富有表現(xiàn)力的API

擁有高質(zhì)量文檔

擁有豐富的插件

擁有專業(yè)的問答社區(qū)和交流群

通過插件可以輕松實(shí)現(xiàn)諸如:

多線程采集

圖片本地化

模擬瀏覽器行為,如:提交Form表單

網(wǎng)絡(luò)爬蟲

.....

環(huán)境要求

PHP >= 7.0

如果你的PHP版本還停留在PHP5,或者不會(huì)使用Composer,你可以選擇使用QueryList3,QueryList3支持php5.3以及手動(dòng)安裝。 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屬性
});

更多用法

$ql->find("#head")->append("
追加內(nèi)容
")->find("div")->htmls(); $ql->find(".two")->children("img")->attrs("alt"); //獲取class為two元素下的所有img孩子節(jié)點(diǎn) //遍歷class為two元素下的所有孩子節(jié)點(diǎn) $data = $ql->find(".two")->children()->map(function ($item){ //用is判斷節(jié)點(diǎn)類型 if($item->is("a")){ return $item->text(); }elseif($item->is("img")) { return $item->alt; } }); $ql->find("a")->attr("href", "newVal")->removeClass("className")->html("newHtml")->... $ql->find("div > p")->add("div > ul")->filter(":has(a)")->find("p:first")->nextAll()->andSelf()->... $ql->find("div.old")->replaceWith( $ql->find("div.new")->clone())->appendTo(".trash")->prepend("Deleted")->...
列表采集

采集百度搜索結(jié)果列表的標(biāo)題和鏈接:

$data = QueryList::get("http://www.baidu.com/s?wd=QueryList")
    // 設(shè)置采集規(guī)則
    ->rules([ 
        "title"=>array("h3","text"),
        "link"=>array("h3>a","href")
    ])
    ->query()->getData();

print_r($data->all());

采集結(jié)果:

Array
(
    [0] => Array
        (
            [title] => QueryList|基于phpQuery的無比強(qiáng)大的PHP采集工具
            [link] => http://www.baidu.com/link?url=GU_YbDT2IHk4ns1tjG2I8_vjmH0SCJEAPuuZN
        )
    [1] => Array
        (
            [title] => PHP 用QueryList抓取網(wǎng)頁內(nèi)容 - wb145230 - 博客園
            [link] => http://www.baidu.com/link?url=zn0DXBnrvIF2ibRVW34KcRVFG1_bCdZvqvwIhUqiXaS
        )
    [2] => Array
        (
            [title] => 介紹- QueryList指導(dǎo)文檔
            [link] => http://www.baidu.com/link?url=pSypvMovqS4v2sWeQo5fDBJ4EoYhXYi0Lxx
        )
        //...
)
編碼轉(zhuǎn)換
// 輸出編碼:UTF-8,輸入編碼:GB2312
QueryList::get("https://top.etao.com")->encoding("UTF-8","GB2312")->find("a")->texts();

// 輸出編碼:UTF-8,輸入編碼:自動(dòng)識(shí)別
QueryList::get("https://top.etao.com")->encoding("UTF-8")->find("a")->texts();
HTTP網(wǎng)絡(luò)操作

攜帶cookie登錄新浪微博

//采集新浪微博需要登錄才能訪問的頁面
$ql = QueryList::get("http://weibo.com","param1=testvalue & params2=somevalue",[
    "headers" => [
        //填寫從瀏覽器獲取到的cookie
        "Cookie" => "SINAGLOBAL=546064; wb_cmtLike_2112031=1; wvr=6;...."
    ]
]);
//echo $ql->getHtml();
echo $ql->find("title")->text();
//輸出: 我的首頁 微博-隨時(shí)隨地發(fā)現(xiàn)新鮮事

使用Http代理

$urlParams = ["param1" => "testvalue","params2" => "somevalue"];
$opts = [
    // 設(shè)置http代理
    "proxy" => "http://222.141.11.17:8118",
    //設(shè)置超時(shí)時(shí)間,單位:秒
    "timeout" => 30,
     // 偽造http頭
    "headers" => [
        "Referer" => "https://querylist.cc/",
        "User-Agent" => "testing/1.0",
        "Accept"     => "application/json",
        "X-Foo"      => ["Bar", "Baz"],
        "Cookie"    => "abc=111;xxx=222"
    ]
];
$ql->get("http://httpbin.org/get",$urlParams,$opts);
// echo $ql->getHtml();

模擬登錄

// 用post登錄
$ql = QueryList::post("http://xxxx.com/login",[
    "username" => "admin",
    "password" => "123456"
])->get("http://xxx.com/admin");
//采集需要登錄才能訪問的頁面
$ql->get("http://xxx.com/admin/page");
//echo $ql->getHtml();
Form表單操作

模擬登陸GitHub

// 獲取QueryList實(shí)例
$ql = QueryList::getInstance();
//獲取到登錄表單
$form = $ql->get("https://github.com/login")->find("form");

//填寫GitHub用戶名和密碼
$form->find("input[name=login]")->val("your github username or email");
$form->find("input[name=password]")->val("your github password");

//序列化表單數(shù)據(jù)
$fromData = $form->serializeArray();
$postData = [];
foreach ($fromData as $item) {
    $postData[$item["name"]] = $item["value"];
}

//提交登錄表單
$actionUrl = "https://github.com".$form->attr("action");
$ql->post($actionUrl,$postData);
//判斷登錄是否成功
// echo $ql->getHtml();
$userName = $ql->find(".header-nav-current-user>.css-truncate-target")->text();
if($userName)
{
    echo "登錄成功!歡迎你:".$userName;
}else{
    echo "登錄失敗!";
}
Bind功能擴(kuò)展

自定義擴(kuò)展一個(gè)myHttp方法:

$ql = QueryList::getInstance();

//綁定一個(gè)myHttp方法到QueryList對(duì)象
$ql->bind("myHttp",function ($url){
    $html = file_get_contents($url);
    $this->setHtml($html);
    return $this;
});

//然后就可以通過注冊(cè)的名字來調(diào)用
$data = $ql->myHttp("https://toutiao.io")->find("h3 a")->texts();
print_r($data->all());

或者把實(shí)現(xiàn)體封裝到class,然后這樣綁定:

$ql->bind("myHttp",function ($url){
    return new MyHttp($this,$url);
});
插件使用

使用CURL多線程插件,多線程采集GitHub排行榜:

$ql = QueryList::use(CurlMulti::class);
$ql->curlMulti([
    "https://github.com/trending/php",
    "https://github.com/trending/go",
    //.....more urls
])
 // 每個(gè)任務(wù)成功完成調(diào)用此回調(diào)
 ->success(function (QueryList $ql,CurlMulti $curl,$r){
    echo "Current url:{$r["info"]["url"]} 
";
    $data = $ql->find("h3 a")->texts();
    print_r($data->all());
})
 // 每個(gè)任務(wù)失敗回調(diào)
->error(function ($errorInfo,CurlMulti $curl){
    echo "Current url:{$errorInfo["info"]["url"]} 
";
    print_r($errorInfo["error"]);
})
->start([
    // 最大并發(fā)數(shù)
    "maxThread" => 10,
    // 錯(cuò)誤重試次數(shù)
    "maxTry" => 3,
]);

GitHub:https://github.com/jae-jae/QueryList 歡迎Star!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25950.html

相關(guān)文章

  • Laravel 框架中常用 PHP 語法

    摘要:更多參考自動(dòng)加載機(jī)制命名空間命名沖突在團(tuán)隊(duì)協(xié)作引入第三方依賴代碼時(shí),往往可能會(huì)出現(xiàn)類函數(shù)和接口重名的情況。多個(gè)有同名函數(shù)時(shí),引入將發(fā)生命名沖突,使用來指明使用哪個(gè)的函數(shù)。 原文:wuYin/blog,轉(zhuǎn)載注明來源即可。 前言 Laravel 框架因?yàn)槠浣M件化的設(shè)計(jì)并恰當(dāng)使用設(shè)計(jì)模式,使得框架本身簡(jiǎn)潔易擴(kuò)展。區(qū)別于 ThinkPHP 那種整合式功能的框架(功能要么全用要么全不用),Lar...

    khlbat 評(píng)論0 收藏0
  • 那些 PHP 開發(fā)者能用得上工具

    PHP 函數(shù)的 JavaScript 實(shí)現(xiàn) module.exports = function array_sum (array) { // eslint-disable-line camelcase // discuss at: http://locutus.io/php/array_sum/ // original by: Kevin van Zonneveld (http://kv...

    JowayYoung 評(píng)論0 收藏0
  • PHP使用QueryList采集微信文章頁

    摘要:采集目標(biāo)微信文章頁標(biāo)題內(nèi)容發(fā)布時(shí)間作者等信息。安裝微信采集代碼采集規(guī)則可以很輕松的就寫出采集代碼出來,來看看運(yùn)行結(jié)果和預(yù)期一樣正確采集到了內(nèi)容,但是內(nèi)容亂碼了。 采集目標(biāo) 微信文章頁標(biāo)題、內(nèi)容、發(fā)布時(shí)間、作者等信息。 采集示例URL https://mp.weixin.qq.com/s?src=11×tamp=1523173327&ver=803&signature=6PCx...

    AdolphLWQ 評(píng)論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評(píng)論0 收藏0
  • php使用QueryList輕松采集JavaScript動(dòng)態(tài)渲染頁面

    摘要:使用的方式來做采集,擁有豐富的插件。下面來演示使用插件抓取動(dòng)態(tài)創(chuàng)建的頁面內(nèi)容。插件使用瀏覽器打開連接使用以采集今日頭條手機(jī)版為例,今日頭條手機(jī)版基于框架,內(nèi)容是純動(dòng)態(tài)渲染出來的。 QueryList使用jQuery的方式來做采集,擁有豐富的插件。 下面來演示QueryList使用PhantomJS插件抓取JS動(dòng)態(tài)創(chuàng)建的頁面內(nèi)容。 安裝 使用Composer安裝: 安裝QueryList...

    Jason 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<