僅用於交流和學習,禁止利用本資源從事任何違反本國(地區)法律法規的活動,一切遵守《網路安全法》
程式碼區黏貼出來的時候特殊符號會自動新增轉義\,可能沒有完全改好,如果執行有問題,請參考示例程式碼)
示例流程
- 開啟百度頁面
- 搜尋新浪微博
- 在新浪微博頁面搜尋周杰倫
- 輸出周杰倫相關熱門微博
實戰步驟
[root@ar414.com Test]composer require facebook/webdriver
[root@ar414.com Test] java -jar selenium-server-standalone-3.141.59.jar
3、示例程式碼(github.com/ar414-com/phpseleniumde...)
<?php
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");
$waitSeconds = 15; //需等待載入的時間,一般載入時間在0-15秒,如果超過15秒,報錯。
$host = 'http://localhost:4444/wd/hub'; // this is the default
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
try
{
$driver->get('https://www.baidu.com/');
echo "當前頁面標題:".$driver->getTitle()."\n";
//定位到輸入框\->輸入"新浪微博"->點選搜尋
$driver->findElement(WebDriverBy::id('kw'))->sendKeys('新浪微博')->submit();
// 等待新的頁面載入完成....
$driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::partialLinkText('新浪微博') ) );
//儲存當前頁面
savePageSource($driver,1);
//一般點選連結的時候,擔心因為失去焦點而拋異常,則可以先呼叫一下sendKeys,再click
$driver->findElement(WebDriverBy::partialLinkText('新浪微博'))->sendKeys('xxx')->click();
switchToEndWindow($driver); //切換至最後一個window
$driver->wait($waitSeconds)->until(WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::cssSelector('h2.UG_box_title') ));
echo "當前頁面標題:".$driver->getTitle()."\n";
//儲存當前頁面
savePageSource($driver,2);
$driver->findElement(WebDriverBy::cssSelector('input.W_input'))->sendKeys('周杰倫');
$driver->findElement(WebDriverBy::cssSelector('a.W_ficon.ficon_search.S_ficon'))->sendKeys('xxx')->click();
$driver->wait($waitSeconds)->until(
WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::cssSelector('div.info') ));
echo "當前頁面標題:".$driver->getTitle()."\n";
//儲存當前頁面
savePageSource($driver,3);
//獲取相關熱門
//div.card-wrap
$elements = $driver->findElements(WebDriverBy::cssSelector('div.card-wrap'));
foreach($elements as $index => $element)
{
$userNickName = $element->findElement(WebDriverBy::cssSelector('a.name'))->getText();
echo "使用者名稱:$userNickName\n";
$content = $element->findElement(WebDriverBy::cssSelector('p.txt'))->getText();
echo "內容:{$content} \n";
echo "------------------------分割線\------------------------\n";
}
//關閉標籤並退出瀏覽器
$driver->close();
$driver->quit();
}
catch (\Throwable $throwable)
{
$driver->close();
$driver->quit();
var_dump($throwable->getMessage());
}
/**
* 儲存頁面
* @param $driver
* @param $pageNumber
*/
function savePageSource($driver,$pageNumber)
{
//獲取頁面資源
$pageSource = $driver->getPageSource(); //輸入到檔案
file_put_contents("./ar414_page{$pageNumber}.html",$pageSource);
}
/**
* 切換至最後一個window
* 因為有些網站的連結點選過去帶有target="_blank"屬性,
* 就新開了一個TAB,而selenium還是定位到老的TAB上,
* 如果要實時定位到新的TAB,則需要呼叫此方法,
* 切換到最後一個window
* @param $driver
*/
function switchToEndWindow($driver)
{
$arr = $driver->getWindowHandles();
foreach ($arr as $k=>$v){
if($k == (count($arr)-1)){
$driver->switchTo()->window($v);
}
}
}
4、執行示例程式碼
[root@ar414.com Test] ll -a
total 24
drwxr-xr-x 3 root root 90 Dec 15 21:50 .
drwxr-xr-x 7 root root 4096 Dec 15 19:53 ..
-rw-r--r-- 1 root root 64 Dec 15 19:59 composer.json
-rw-r--r-- 1 root root 4925 Dec 15 19:59 composer.lock
-rw-r--r-- 1 root root 28 Dec 15 21:43 .gitignore
-rw-r--r-- 1 root root 3820 Dec 15 21:42 Run.php
drwxr-xr-x 5 root root 69 Dec 15 20:01 vendor
[root@ar414.com Test] php Run.php
當前頁面標題:百度一下,你就知道
當前頁面標題:微博-隨時隨地發現新鮮事
當前頁面標題:微博搜尋
使用者名稱:周杰倫資訊網官方微博
內容:周杰倫【我是如此相信】完整MV 大首播!
MV中周杰倫戴著鴨舌帽帥氣入鏡,回到剛出道第一張專輯的造型!在樂壇邁入20年的此刻,周杰倫也用MV影像作品帶大家重回初心。
周杰倫新歌-我是如此相信 MV大首播!
周杰倫#fanstube#
L周杰倫資訊網官方微博的微博影片
------------------------分割線------------------------
使用者名稱:全球熱門蒐羅
內容:周杰倫精選的慢歌30首:
《 說好不哭+等你下課+愛在西元前+安靜+可愛女人+星晴+彩虹+斷了的弦+楓+告白氣球+擱淺+黑色毛衣+黑色幽默+東風破+髪如雪+算什麼男人+千里之外+青花瓷+晴天+大笨鐘+她的睫毛+愛情廢柴+我不配+心雨+夜的第七章+夜曲+一路向北+稻香》
影片較長,建 展開全文c
------------------------分割線------------------------
使用者名稱:傑威爾音樂官方微博
內容:周杰倫「我是如此相信」電影天火主題曲
表達了在面對災難時,不畏艱難、不放棄的信念!歌好聽電影也要記得去看!
QQ音樂連結L我是如此相信 (《天火》電影主題曲)
------------------------分割線------------------------
使用者名稱:愛川川
內容:周杰倫
所有人都在聽的周杰倫新歌《我是如此相信》,該作品有方文山作詞,周杰倫作曲和演唱,喜歡、支援周杰倫的歌曲 L愛川川的微博影片
------------------------分割線------------------------
使用者名稱:多年以前多年前
內容:嗯啦喜歡周杰倫 2武漢 L多年以前多年前的微博影片
------------------------分割線------------------------
使用者名稱:南國都市報
內容:#聽歌# 周杰倫《我是如此相信》1080P官方完整版MV,一起來聽周董的新歌吧~L周杰倫微博臺的微博影片
------------------------分割線------------------------
使用者名稱:浮生南
內容:電影《天火》主題曲——周杰倫新歌「我是如此相信」
表達了在面對災難時,不畏艱難、不放棄的信念!好好聽 L浮生南的微博影片
------------------------分割線------------------------
使用者名稱:江珊Harley
內容:【周杰倫我是如此相信】,我投給了“#我是如此相信 好聽#”這個選項,你也快來表態吧~
------------------------分割線------------------------
使用者名稱:jeunao
內容:#周杰倫海口演唱會##周杰倫深圳演唱會#
周杰倫 地表最強巡迴演唱會 門票
海口
500/700/900/1300/1700/2000
有ð«,前徘少量,要俬 #周杰倫演唱會# i
------------------------分割線------------------------
使用者名稱:我源哥才是大總攻
內容:#宋亞軒 一個人的阿卡貝拉# #宋亞軒翻唱周杰倫晴天# 喜歡上這麼個優秀小孩也太幸福了
------------------------分割線------------------------
使用者名稱:就愛傲嬌的周小只
內容:我艹!老子都不曉得是該笑還是該哭了。。。果然jvr的員工只有周杰倫一個人
------------------------分割線------------------------
使用者名稱:婷strawberryfve
內容:#周杰倫新歌我是如此相信#不得不承認,我小時候的眼光真的很好
------------------------分割線------------------------
使用者名稱:娛樂圈有飯
內容:吳謹言一天喝兩三杯奶茶??周杰倫都不敢說自己一天兩三杯奶茶吧
------------------------分割線------------------------
使用者名稱:整理師睿姿
內容:#周杰倫新歌我是如此相信# 周董又出新歌了,趕緊聽聽。Apple Music:《我是如此相信》 (電影《天火》主題曲) 天王嫂是這個電影的女主角。so 周董也是為了捧媳婦兒。話說 昆凌的演技還需要再歷練歷練。周董在mv中 好像瘦了哦
------------------------分割線------------------------
使用者名稱:He_說
內容:周杰倫 ×#周杰倫新歌我是如此相信#
戴著鴨舌帽的酷酷男孩
二十年始終如一
#我是如此相信##世無其二週杰倫#
------------------------分割線------------------------
使用者名稱:一朵小枇杷
內容:我參與了@榮耀的背後刻著一道孤獨0118 發起的【周杰倫我是如此相信】,我投給了“#周杰倫新歌我是如此相信#”這個選項,你也快來表態吧~
------------------------分割線------------------------
使用者名稱:搞笑巍
內容:《昆凌如果真的要當演員,首先還是要擺脫周杰倫的影子》 O昆凌如果真的要當演員,首先還是要擺脫周杰倫的影子
------------------------分割線------------------------
使用者名稱:首發微音樂
內容:#周杰倫新歌我是如此相信# 周杰倫《我是如此相信》官方版MV首發,熟悉的抒情搖滾曲風,那個鴨舌帽男孩回來了 L首發微音樂的微博影片
------------------------分割線------------------------
使用者名稱:周杰倫微博臺
內容:【#周杰倫新歌我是如此相信#】
有一種天氣叫《晴天》
有一種香氣叫《稻香》
有一種晚安叫《夜曲》
有一種停滯叫《擱淺》
有一種美麗叫《彩虹》
有一種海洋叫《花海》
有一種靜謐叫《安靜》
有一種夜空叫《星晴》
有一種讓步叫《退後》
有一種勸誡叫《不該》
有一種國寶叫《青花瓷》
有一種香味叫《七里 展開全文c
------------------------分割線------------------------
使用者名稱:會星座的兔子
內容:#周杰倫新歌我是如此相信#你覺得周杰倫新歌如何? 你覺得周杰倫新歌如何?
------------------------分割線------------------------
使用者名稱:酒釀饅頭魚
內容:#宋亞軒翻唱周杰倫晴天# #宋亞軒 一個人的阿卡貝拉#
沒簽到的速來簽到了,這個資料一點都不可啊對不對
沒簽到的小噴漆要被打屁股哦ð¤«
首頁來接力?
------------------------分割線------------------------
使用者名稱:諸葛亮郭嘉
內容:#周杰倫# #周杰倫新歌# #周杰倫新歌MV# #周杰倫我如此相信mv# 周杰倫新歌MV終於上線了《我是如此相信》是由方文山作詞 周杰倫作曲並演唱的一首歌曲。我是如此相信 在背後支撐是你 一直與我並肩同行
------------------------分割線------------------------
使用者名稱:你若撒野我把酒奉陪0118
內容:太慘了,所以新歌沒嵌入到電影裡,是不是就是因為只有周杰倫和錄歌等人工作,所以都忙完沒時間嵌入了ððð
------------------------分割線------------------------
使用者名稱:HannahQuinli...
string(291) "no such element: Unable to locate element: {"method":"css selector","selector":"p.txt"}
(Session info: chrome=78.0.3904.108)
(Driver info: chromedriver=78.0.3904.105 (60e2d8774a8151efa6a00b1f358371b1e0e07ee2-refs/branch-heads/3904@{#877}),platform=Linux 3.10.0-862.9.1.el7.x86_64 x86_64
本作品採用《CC 協議》,轉載必須註明作者和本文連結