欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php plantomjs

丁麗芳1年前6瀏覽0評論
在網頁開發的過程中,我們經常會遇到需要對頁面進行抓取和渲染的場景,這時候我們就需要用到一種強大的工具——PhantomJS。而在使用PhantomJS的過程中,借助PHP語言的支持,我們可以實現對于網頁的自動化操作、數據爬取等功能。接下來,我們就來一起看看PHP PhantomJS的使用。
在使用PHP PhantomJS之前,需要先安裝PhantomJS,并將其加入環境變量中。PhantomJS是一個基于WebKit的可拓展的、用于處理網絡關鍵業務案例的無頭瀏覽器。它能夠模仿幾乎所有的瀏覽器功能,如頁面渲染、解析JavaScript等。我們使用PhantomJS能夠實現模擬表單提交、頁面截圖、Cookie設置、頁面爬取等功能。
下面我們來看一個簡單的例子,實現對于百度頁面的自動截圖功能。 首先,我們需要在命令行輸入安裝代碼:npm install -g phantomjs-prebuilt。安裝完成后,在當前目錄下創建一個test.php文件,將以下代碼插入文件中:
//引入autoload.php文件
require_once('vendor/autoload.php');
<br>
    //引入phantomjs類庫
use JonnyW\PhantomJs\Client;
<br>
    //創建客戶端對象
$client = Client::getInstance();
<br>
    //設置PhantomJS所在位置
$client->getEngine()->setPath('/usr/local/bin/phantomjs');
<br>
    // 創建請求,并設置請求URL
$request = $client->getMessageFactory()->createRequest('http://www.baidu.com', 'GET');
<br>
    //設置圖片寬度和高度
$request->setViewportSize(1024, 768);
<br>
    // 發送請求
$response = $client->getMessageFactory()->createResponse();
<br>
    // 首次嘗試請求
$client->send($request, $response);
<br>
    // 獲取請求結果,并保存為圖片
$content = $response->getContent();
$file = fopen('baidu.png', 'w');
fwrite($file, $content);
fclose($file);
<br>
    //輸出結果
echo '截圖生成成功!';
在命令行中執行php test.php,即可生成一個名為baidu.png的截圖,該頁面的截圖如下圖所示:
上面的例子中,我們使用了JonnyW\PhantomJs\Client類庫中的getClient、getMessageFactory等方法。其中,getClient方法用來獲取JonnyW\PhantomJs\HttpClient\HttpClientInterface客戶端;getMessageFactory方法用于創建一個請求。我們還使用了setViewportSize方法設置了所要截圖的圖片大小。接下來,我們使用send方法將請求發送出去,之后再利用getContent方法獲取響應返回的內容,在文件中寫入成功后,即可實現自動截圖功能。
除了實現自動截圖功能,PHP PhantomJS還可以用于數據爬取。例如我們可以通過PHP PhantomJS實現對于淘寶搜索頁面的數據爬取。具體代碼如下:
//引入autoload.php文件
require_once 'vendor/autoload.php';
<br>
//引入phantomjs類庫
use JonnyW\PhantomJs\Client;
<br>
//創建客戶端對象
$client = Client::getInstance();
<br>
//設置PhantomJS所在位置
$client->getEngine()->setPath('/usr/local/bin/phantomjs');
<br>
//創建請求,并設置請求URL
$request = $client->getMessageFactory()->createRequest('https://s.taobao.com/search?q=macbook&sort=sale-desc', 'GET');
<br>
//發送請求
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
<br>
//獲取請求結果,進行數據解析
$content = $response->getContent();
<br>
//解析HTML,獲取需要的數據
$doc = new DOMDocument();
@$doc->loadHTML($content);
<br>
//獲取所有<a>標記
$links = $doc->getElementsByTagName('a');
<br>
//存儲數據的數組
$data = array();
<br>
//循環遍歷<a>標記,獲取數據
foreach ($links as $link) {
$href = $link->getAttribute('href');
$title = $link->getAttribute('title');
<br>
    if (strpos($href, "item") !== false) {
$data[] = array(
'title' => $title,
'href' => 'https:' . $href
);
}
}
<br>
//輸出結果
echo json_encode($data);
在命令行工具中執行php test.php,即可得到淘寶搜索頁面中所有商品的名稱和鏈接,并以json格式返回。
通過以上兩個實例,我們可以看到PHP PhantomJS強大的自動化能力和數據處理功能,極大地簡化了我們的工作量,使我們能夠更為高效地完成開發工作。當然,以上例子僅是其功能的冰山一角,還有很多其他強大的功能等著我們去發掘。