Untuk operasi rangkaian http yang lebih kompleks
QueryList
operasi rangkaian terbina dalam QueryList
memfokus pada pemilihan DOM untuk operasi rangkaian yang lebih kompleks, anda boleh memilih untuk menggunakan Pelanjutan permintaan
Ia boleh dilaksanakan dengan mudah: membawa kuki, memalsukan asal, memalsukan penyemak imbas dan fungsi lain, tetapi jika anda merasakan ia masih tidak dapat memenuhi keperluan anda, berikut ialah beberapa penyelesaian untuk rujukan: QueryList
本身内置的网络操作非常简单,QueryList
关注于DOM选择;对于更复杂的网络操作可以选择使用Request扩展
,它可以简单的实现:携带cookie、伪造来路、伪造浏览器等功能,但如果觉的它依旧不能满足你的需求,下面有几个可以参考的方案:
例:
function getHtml($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } $rules = array( //采集规则 ); //获取页面源码 $html = getHtml('http://xxx.com'); //采集 $data = QueryList::Query($html,$rules)->data;
QueryList
可以无缝与任意第三放http包配合使用,下面以guzzlehttp/guzzle
包为例,Guzzle
是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。
Guzzle
1. Gunakan curl untuk merangkum permintaan http
Contoh:
//安装QueryList composer require jaeger/querylist //安装Guzzle composer require guzzlehttp/guzzleQueryListBoleh digunakan dengan lancar dengan mana-mana pakej http pihak ketiga Berikut mengambil pakej guzzlehttp/guzzle
sebagai contohGuzzle
ialah klien HTTP PHP digunakan untuk menghantar permintaan dengan mudah dan menyepadukannya ke dalam perkhidmatan WEB kami.Pemasangan
Guzzle Manual bahasa Cina: http://guzzle-cn.readthedocs.io/zh_CN/latest/ <?php require 'vendor/autoload.php'; //实例化一个Http客户端 $client = new GuzzleHttp\Client(['base_uri' => 'https://phphub.org']); $jar = new \GuzzleHttp\Cookie\CookieJar(); //发送一个Http请求 $response = $client->request('GET', '/categories/6', [ 'headers' => [ 'User-Agent' => 'testing/1.0', 'Accept' => 'application/json', 'X-Foo' => ['Bar', 'Baz'] ], 'form_params' => [ 'foo' => 'bar', 'baz' => ['hi', 'there!'] ], // 'cookies' => $jar, 'timeout' => 3.14, // 'proxy' => 'tcp://localhost:8125', // 'cert' => ['/path/server.pem', 'password'], ]); $body = $response->getBody(); //获取到页面源码 $html = (string)$body; //采集规则 $rules = array( //文章标题 'title' => ['.media-heading a','text'], //文章链接 'link' => ['.media-heading a','href'], //文章作者名 'author' => ['.img-thumbnail','alt'] ); //列表选择器 $rang = '.topic-list>li'; //采集 $data = \QL\QueryList::Query($html,$rules,$rang)->data; //查看采集结果 print_r($data);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜Hasil:🎜Array ( [0] => Array ( [title] => 好友动态的实现原理 [link] => https://phphub.org/topics/2750 [author] => luo975974740 ) [1] => Array ( [title] => 打造完美的 Ubuntu16.04 开发环境【持续更新】 [link] => https://phphub.org/topics/2723 [author] => liuwantao ) //省略........ [19] => Array ( [title] => [Laravel 5.3 新功能] 10. 全文搜索方案 Laravel Scout 介绍 [link] => https://phphub.org/topics/2673 [author] => monkey ) )🎜