PHP utilise QueryList pour collecter facilement les pages JavaScript rendues dynamiquement

藏色散人
Libérer: 2023-04-07 16:34:01
avant
3134 Les gens l'ont consulté

QueryList utilise jQuery pour la collection et dispose d'une multitude de plug-ins.

Ce qui suit montre comment QueryList utilise le plug-in PhantomJS pour capturer le contenu de la page créé dynamiquement par JS.

Recommandé : "Tutoriel PHP"

Installation

Utilisez Composer pour installer :

Installer QueryList

composer require jaeger/querylist
GitHub: https://github.com/jae-jae/QueryList
Copier après la connexion

Installer le plug-in PhantomJS

composer require jaeger/querylist-phantomjs
GitHub: https://github.com/jae-jae/QueryList-PhantomJS
Copier après la connexion

Télécharger le fichier binaire PhantomJS

Site officiel de PhantomJS : http://phantomjs.org, téléchargez le fichier binaire PhantomJS pour la plateforme correspondante.

API du plug-in

Navigateur QueryList ($url,$debug = false,$commandOpt = []) : utilisez le navigateur pour ouvrir la connexion

Utiliser

Prenons l'exemple de la version mobile de "Today's Toutiao" La version mobile de "Today's Toutiao" est basée sur le framework React, et le contenu est purement dynamique. rendu.

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

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

Exemple-1

Obtenir un rendu HTML dynamique :

$html = $ql->browser('https://m.toutiao.com')->getHtml();
print_r($html);
Copier après la connexion

Obtenir tout le contenu du texte de la balise p :

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

Sortie :

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

Utiliser le proxy http :

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

Exemple-2

Personnaliser une requête complexe :

$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){
    $r->setMethod('GET');
    $r->setUrl('https://m.toutiao.com');
    $r->setTimeout(10000); // 10 seconds
    $r->setDelay(3); // 3 seconds
    return $r;
})->find('p')->texts();
print_r($data->all());
Copier après la connexion

Activer le mode débogage et charger les fichiers cookies localement :

$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){
    $r->setMethod('GET');
    $r->setUrl('https://m.toutiao.com');
    $r->setTimeout(10000); // 10 seconds
    $r->setDelay(3); // 3 seconds
    return $r;
},true,[
    '--cookies-file' => '/path/to/cookies.txt'
])->rules([
    'title' => ['p','text'],
    'link' => ['a','href']
])->query()->getData();
print_r($data->all());
Copier après la connexion

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:segmentfault.com
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