Comment PHP utilise-t-il QueryList pour collecter facilement des pages js rendues dynamiquement ?

青灯夜游
Libérer: 2023-04-04 06:48:02
original
3609 Les gens l'ont consulté

Ce chapitre vous présentera comment PHP peut utiliser QueryList pour collecter facilement des pages de rendu dynamique js ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

QueryList utilise jQuery pour la collection et dispose d'une multitude de plug-ins. Montrons que QueryList utilise le plug-in PhantomJS pour capturer le contenu de la page créé dynamiquement par JS.

1. Installation

Utilisez Composer pour installer :

1. Installer QueryList

composer require jaeger/querylist
Copier après la connexion

GitHub : https://github.com/jae-jae/QueryList

2. Installez le plug-in PhantomJS

composer require jaeger/querylist-phantomjs
Copier après la connexion

GitHub : https :// github.com/jae-jae/QueryList-PhantomJS

2. Téléchargez le fichier binaire PhantomJS

PhantomJS officiel site web : http://phantomjs.org, téléchargez le fichier binaire PhantomJS correspondant à la plateforme.

3. API du plug-in

Navigateur QueryList ($url,$debug = false,$commandOpt = []) : ouvrir avec un navigateur Connectez-vous

4. Utilisez

Prenons comme exemple la version mobile de « Toutiao d'aujourd'hui ». " est basé sur le framework React. Le contenu Il est rendu purement dynamique.

Ce qui suit montre l'utilisation du plug-in PhantomJs de QueryList :

1 Installez le plug-in

use QL\QueryList;
use QL\Ext\PhantomJs;

$ql = QueryList::getInstance();
// 安装时需要设置PhantomJS二进制文件路径
$ql->use(PhantomJs::class,'/usr/local/bin/phantomjs');
//or Custom function name
$ql->use(PhantomJs::class,'/usr/local/bin/phantomjs','browser');
Copier après la connexion

2.Exemple-1

<🎜. >Obtenez un rendu HTML dynamique :

$html = $ql->browser(&#39;https://m.toutiao.com&#39;)->getHtml();
print_r($html);
Copier après la connexion
Obtenez tout le contenu du texte de la balise p :

$data = $ql->browser(&#39;https://m.toutiao.com&#39;)->find(&#39;p&#39;)->texts();
print_r($data->all());
Copier après la connexion
Sortie :

Array(
    [0] => 自拍模式开启!国庆假期我和国旗合个影
    [1] => 你旅途已开始 他们仍在自己的岗位上为你的假期保驾护航
    [2] => 喜极而泣,都教授终于回到地球了!    //....)
Copier après la connexion
Utilisez le proxy http :

// 更多选项可以查看文档: 
http://phantomjs.org/api/command-line.html
$ql->browser(&#39;https://m.toutiao.com&#39;,true,[    
// 使用http代理 
&#39;--proxy&#39; => &#39;192.168.1.42:8080&#39;,    &#39;--proxy-type&#39; => &#39;http&#39;
])
Copier après la connexion
3 .Exemple-2

Personnaliser une requête complexe :

$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){
    $r->setMethod(&#39;GET&#39;);
    $r->setUrl(&#39;https://m.toutiao.com&#39;);
    $r->setTimeout(10000); // 10 seconds
    $r->setDelay(3); // 3 seconds
    return $r;
})->find(&#39;p&#39;)->texts();

print_r($data->all());
Copier après la connexion
Activer le mode débogage et charger le fichier cookie localement :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal