## 本文章为自己写的实例,仅供参考,如需转载请标明出处。
## 如果想知道更多方法,请参考文档(翻译过的不完全版):[php selenium文档](https://www.kancloud.cn/wangking/selenium/234534)
1.下载Selenium Serve:
下載地址:http://www.seleniumhq.org/download,也可以自己百度下載
下載完成后將壓縮包放入項目目錄
2.通过composer安装Selenium(可能需要翻墻):
composer require facebook/webdriver
3. 打開CMD,進入压缩包所在文件夾,执行命令开启Selenium Serve(該操作需要JAVA支持,如果未安裝JAVA請自行安裝)
java -jar selenium-server-standalone-2.42.2.jar
4. 代碼示例:
<?php
// 引入Class
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
require_once('vendor/autoload.php');
// 設置字符集
header("Content-Type: text/html; charset=UTF-8");
$host = 'http://localhost:4444/wd/hub'; // this is the default
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
// navigate to 'http://docs.seleniumhq.org/'
$driver->get('http://quote.eastmoney.com/sz000001.html');
// 獲取網站標題
echo $driver->getTitle();
//关闭浏览器
$driver->quit();
?>
5. 代码示例(爬取列表中的数据代码):
// 引入Class
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
require_once('vendor/autoload.php');
// 設置配置、参数
set_time_limit(0);
header("Content-Type: text/html; charset=UTF-8");
$sharesCode = '000001';
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
// 判断股票所属地区
if( in_array($sharesCode[0], array(0,3)) ){
$areaCode = 'sz';
}else{
$areaCode = 'sh';
}
// 创建连接
$driver->get('http://quote.eastmoney.com/changes/stocks/'. $areaCode . $sharesCode .'.html');
// 判断元素是否存在,此处视情况添加,因为找不到元素会报错
if(!isElementExsit($driver, WebDriverBy::cssSelector('strong.xp1'))){
echo '未找到元素';
$driver->quit();
return false;
}
// 獲取股票单价
$element = $driver->findElement(WebDriverBy::cssSelector("strong.xp1"));
$xp1 = $element->getText();
// 獲取股票總市值
$element = $driver->findElement(WebDriverBy::cssSelector("td#zsz"));
$zsz = $element->getText();
// 获取股票统计列表数据
$driver->get("http://data.eastmoney.com/bbsj/stock{$sharesCode}/yjbb.html");
$element = $driver->findElements(WebDriverBy::cssSelector("#dt_1>tbody>tr>td"));
// 因为每行有12列,所以循环12次为一行保存
$line = 0;
$sharesInfo = array();
$allSharesInfo = array();
foreach ($element as $k => $v) {
$sharesInfo[] = $v->getText();
if( ($k+1) % 17 == 0 ){
$allSharesInfo['list'][] = str_replace( array("\n", "\r", "\r\n", "<br>"), '-', $sharesInfo);
$sharesInfo = array();
$line++;
if( $line >= 12 ){
$allSharesInfo['zsz'] = $zsz;
$allSharesInfo['xp1'] = $xp1;
file_put_contents("shares_info/{$sharesCode}.txt", json_encode($allSharesInfo)."\r\n");
//关闭浏览器
$driver->quit();
return $allSharesInfo;
unset( $allSharesInfo );
break;
}
}
}
翻页实例,以及有些网站做的防爬虫,数据编码等问题没有在这里编写,如果有需要可以留言或者私信,希望本文章能对你有所帮助