PHP + Selenium + Chrome / Firefox 抓取网页自动登录
米扑博客在上一篇《PHP + Selenium + WebDriver 抓取米扑科技首页》已经详细介绍了PHP + Selenium + Chrome / Firefox 抓取网页
本文将介绍通过 PHP + Selenium 解析网页内容,并实现自动登录,这些都是爬虫常用的需求功能
html 解析库,用于解析网页,类似于selenium
下载 simple_html_dom.php 或 直接下载 simple_html_dom.php.zip
帮助文档:PHP Simple HTML DOM Parser Manual
下载后,放在下面代码的同一级目录,用于解析网页正文
PHP + Selenium + Firefox 抓取网页
<?php
require_once('/opt/php-selenium/vendor/autoload.php');
include_once('simple_html_dom.php');
header("content-type:text/html; charset=xxx");
try {
$host = "http://localhost:8888/wd/hub";
$desired_capabilities = DesiredCapabilities::firefox();
$driver = RemoteWebDriver::create($host, $desired_capabilities);
// 打开登录页面
$url = 'https://proxy.mimvp.com/usercenter/login.php';
$driver->get($url);
var_dump($driver->getTitle());
$element = $driver->findElement(WebDriverBy::id('user_email'));
$element->clear(); // 清空
$element->sendKeys('abc@mimvp.com'); // 自动填写淘宝用户名
$element = $driver->findElement(WebDriverBy::id('user_pwd'));
$element->clear(); // 清空
$element->sendKeys('123456'); // 自动填写淘宝密码
$driver->findElement(WebDriverBy::id('postcontent'))->click();
$page_source = $driver->getPageSource();
echo '<br><br> login_page - strlen($page_source) : ' . strlen($page_source);
// 爬取用户中心(登录后的页面)
$url = 'https://proxy.mimvp.com/usercenter/userinfo.php';
$driver->get($url);
var_dump($driver->getTitle());
$page_source = $driver->getPageSource();
echo '<br><br> userinfo_page - strlen($page_source) : ' . strlen($page_source);
// 格式化网页内容
$html_dom = str_get_html( $page_source );
$table_element = $html_dom->find('.userinfo_welcome', 0);
var_dump(trim($table_element->plaintext));
$driver->quit();
} catch (Exception $e) {
var_dump($e->getMessage());
}
?>
运行结果:
string '会员登录 - 米扑代理' (length=27) login_page - strlen($page_source) : 18845 string '会员中心 - 米扑代理' (length=27) userinfo_page - strlen($page_source) : 56402 string '欢迎 abc@mimvp.com' (length=23)
爬取得网页是米扑代理:https://proxy.mimvp.com/usercenter/login.php
Firefox 登录的瞬间截图:
问题:
Chrome is being controlled by automated test software
解决:
$desired_capabilities = DesiredCapabilities::chrome();
$desired_capabilities->setCapability('acceptSslCerts', true);
$options = new ChromeOptions();
$options->addArguments(array("disable-infobars"));
$desired_capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create($host, $desired_capabilities);
参考推荐:
PHP + Selenium + WebDriver 抓取米扑科技首页
PHP 获取网页标题(title)、描述(description)、关键字(keywords)等meta信息
Python + Selenium2 + Chrome 爬取网页
selenium+php-webdriver实现抓取淘宝页面
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-06-17 05:24:49
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
感谢分享,这代码真是我要的,谢谢
当初也是我需要的,代码有任何错误遗漏,欢迎纠正补充哈