php phantomjs替代,querylist 的phantomjs插件无法使用自定义UA的替代方法

querylist 的phantomjs插件无法使用自定义UA,反正我是一只没有搞定,网路上也没有资料。最后使用以下替代方法。

直接通过 JonnyW\PhantomJs 获取PhantomJs  浏览器入口,返回结果交给querylist 使用。其实querylist 的插件phantomjs也是这个方法,但是封装以后没有找到设置接口。

phantomjs的二进制文件请到官网下载。

注:phantomjs现在已经停止更新,以后可以关注chrome、firefox的无头模式。

我这里没有找到chrome、firefox无头模式的php使用方法,网上全部是基于selenium的python代码。希望尽快会有吧。

composer.json 文件:{

"require": {

"jaeger/querylist": "^4.1",

"jaeger/querylist-phantomjs": "^4.0"

}

}

PHP 代码:<?php

use QL\QueryList;

use JonnyW\PhantomJs\Client;

//这里定义PHANTOMJS的二进制路径

define('PHANTOMJS_PATH', 'G:\phpStudy\tools\phantomjs-2.1.1-windows\bin\phantomjs.exe');

include './composer/vendor/autoload.php';

//调用浏览器方法,获取动态加载的html

$html = browse('https://item.taobao.com/item.htm?id=586306700198');

//这里需要前后加上html的开始结束标签,不知道为什么QueryList不能正确解析PhantomJs的返回数据

$ql = QueryList::html(''.$html.'');

//测试过程中发现图片懒加载的地方,没有加载正确的图片,不知道phantomjs有没有自动滚动页面的方法

$text1 = $ql->find('#J_DivItemDesc img')->attrs('data-ks-lazyload');

$text2 = $ql->find('#J_DivItemDesc img')->attrs('src');

// 转码

// $text = mb_convert_encoding($text,'utf-8','gbk');

// $text = htmlspecialchars($text,ENT_SUBSTITUTE,'utf-8');

// $text = mb_convert_encoding($text,'gbk','utf-8');

var_dump($text1->all());

echo '
';

var_dump($text2->all()) ;

/**

*

* @param string $url

* @return string

*/

function browse($url){

//获取一个浏览器

$client = Client::getInstance();

//设置phantomjs位置

$client->getEngine()->setPath(PHANTOMJS_PATH);

//禁止加载图片

$client->getEngine()->addOption('--load-images=false');

//忽略ssl错误

$client->getEngine()->addOption('--ignore-ssl-errors=true');

//获取$request对象

$request = $client->getMessageFactory()->createRequest($url, 'GET');

//设置超时

$timeout = 10000;

$request->setTimeout($timeout);

//伪造UA

$request->addSetting('userAgent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36');

//获取$response对象

$response = $client->getMessageFactory()->createResponse();

//执行

$client->send($request, $response);

return $response->getContent();

}

JonnyW\PhantomJs 的使用方法参考了:https://blog.csdn.net/mxdzchallpp/article/details/82971348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值