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
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
感谢分享,这代码真是我要的,谢谢
当初也是我需要的,代码有任何错误遗漏,欢迎纠正补充哈