php使用WebDriver调用chromedrive进行网页采集

应用场景:现在很多项目都是前后端分离的,而且数据进行加密,很难进行采集。这个时候就需要使用WebDriver调用浏览器进行完整加载,获取到内容

第一步:准备工作

  • 初始化的ubuntu服务器(避免其他因素干扰)
  • google-chrome和chromedrive(版本要对应。下边会教怎么找对应版本的安装包)
  • lnmp 环境以及放入一个测试项目

第二步:下载 Chrome 浏览器的安装包

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install -f

查看Chrome版本号

google-chrome --version

第三步:下载对应版本的 ChromeDriver,并解压到指定目录(/usr/local/bin),并给777权限

旧版本路径地址:https://chromedriver.storage.googleapis.com/index.html?spm=5176.28103460.0.0.681a3da2nIrUND
新版本路径地址:https://googlechromelabs.github.io/chrome-for-testing/#stable
加压后如图
在这里插入图片描述

第四步:启动ChromeDriver 服务

LANGUAGE=ZH-CN.UTF-8 /usr/local/bin/chromedriver --port=9515

输出一下内容即为成功

第五步:使用compose安装webdriver扩展,到项目中

composer require facebook/webdriver
或者
composer require php-webdriver/webdriver

第六步:php代码

<?php
require_once('vendor/autoload.php');

use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;

$options = new ChromeOptions();
$options->addArguments(['--no-sandbox','--headless']);

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);

$host = 'http://localhost:9555';
$driver = RemoteWebDriver::create($host, $capabilities);

$url = 'https://www.bilibili.com/movie/index/?from_spmid=666.7.index.1#st=2&style_id=10104&area=-1&release_date=-1&season_status=-1&order=2&sort=0&page=1';
// 访问网站
$driver->get($url);

// 获取页面源代码
$pageSource = $driver->getPageSource();

echo $pageSource;

// 关闭 WebDriver 会话
$driver->quit();

输出网页内容即为成功。过程中可能会有报错,可以往文件执行、访问权限、端口等方向考虑

第七步:解决,第四步中终端不可关闭,关闭后就无法使用的问题。

解决方法:
1、将启动命令行放入start_chrome.sh文件。放在(/usr/local/bin)目录下。(权限777)
2、使用如下命令进行启动(解释:将标准输出(stdout)和标准错误(stderr)都重定向到/dev/null,即丢弃所有输出。nohup命令用于忽略挂断 HUP 信号,使得进程在终端关闭后仍能继续运行;&符号则是将命令放到后台执行。)

nohup /usr/local/bin/start_chrome.sh > /dev/null 2>&1 &
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值