PHP抓取网页执行JS phantomjs

PHP抓取网页,网页内容是通过JS加载的,这时需要执行JS来加载内容。

需要用到phantomjs。下面是windows的安装方法。

1.安装phantomjs

下载地址:http://phantomjs.org/download.html

下载完成解压到E:\software\phantomjs-2.1.1-windows

把E:\software\phantomjs-2.1.1-windows\bin添加到环境变量:

右键我的电脑-》属性-》高级系统设置-》环境变量-》在系统变量找到Path编辑:在最后添加 ;E:\software\phantomjs-2.1.1-windows\bin

安装完成

2.PHP phantomjs安装

需要使用composer来安装,在项目的composer.json加上:

{
    "require": {
        "jonnyw/php-phantomjs":"4.*"
    }
}

然后打开命令行进入到项目路径,运行:

composer update

安装完成。

3.PHP执行JS

<?php
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;

$client = Client::getInstance();

$client->getEngine()->setPath('E:/software/phantomjs-2.1.1-windows/bin/phantomjs.exe'); //设置phantomjs位置
$client->getEngine()->addOption('--load-images=false');
$client->getEngine()->addOption('--ignore-ssl-errors=true');

$url = 'https://www.baidu.com';
$request = $client->getMessageFactory()->createRequest($url, 'GET');

$timeout = 10000; //设置超时
$request->setTimeout($timeout);

$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');//设置ua

$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);

echo $response->getContent();
?>

 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

CyborgLin

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值