
Python調(diào)用墨跡天氣API實踐指南
在大多數(shù)情況下,運行您自己的無頭 Chrome 瀏覽器集群和代理池的成本很高。使用特殊服務(wù)在
云中呈現(xiàn) Javascript 驅(qū)動的網(wǎng)頁,并返回靜態(tài) HTML 更有意義。
我將為最近表現(xiàn)出濃厚興趣的PHP開發(fā)人員分享代碼。我們將生成調(diào)用?Web Scraping Service API?的簡單 PHP 腳本。要自動執(zhí)行 HTML 抓取任務(wù),請按照以下步驟操作:
需要 Dataflow Kit API 密鑰才能訪問 Dataflow Kit API。服務(wù)器。免費注冊后,您可以從用戶儀表板獲取它。一旦您注冊,我們將免費授予您 1000 個積分。
轉(zhuǎn)到?https://account.dataflowkit.com?并使用 Facebook/Google 登錄或使用您的電子郵件注冊。
單擊“登錄”按鈕以使用您的Facebook或Google帳戶進(jìn)行注冊。或按“注冊”鏈接使用您的電子郵件進(jìn)行注冊。
您將需要授權(quán)對 Dataflow Kit API 的請求。稍后我們會將其添加到我們的 PHP 腳本中。請在儀表板設(shè)置中找到它。
這里有一個依賴關(guān)系。在運行最終腳本之前,請按照?https://github.com/rmccue/Requests?中的安裝說明進(jìn)行操作,并安裝上述 PHP 請求包。
3.1. 轉(zhuǎn)到?https://dataflowkit.com/html-scraping?。為 HTML Scraping API 代碼生成器指定一些參數(shù)以生成 PHP 腳本。
參數(shù) | 描述 |
---|---|
api_key | API 密鑰用于通過 API 進(jìn)行身份驗證 – 您可以在帳戶儀表板中找到它 |
網(wǎng)址 | 提供用于下載內(nèi)容的 URL。 |
代理 | 選擇一個國家/地區(qū),通過位于那里的代理將請求傳遞到目標(biāo)網(wǎng)站。 |
渲染 Javascript | 將其設(shè)置為“是”以呈現(xiàn) Javascript 動態(tài)網(wǎng)頁。對于靜態(tài) HTML 網(wǎng)頁,請選擇“否”。默認(rèn)為“是”。 |
等待延遲 | 為自定義延遲指定“等待延遲”參數(shù)(以秒為單位)。在初始頁面加載后,留出更多時間來呈現(xiàn)網(wǎng)站的某些元素有時會有所幫助。 |
行動 | 使用操作:輸入、單擊、等待、滾動,在渲染網(wǎng)頁時自動執(zhí)行手動工作流。它們模擬現(xiàn)實世界中人類與頁面的交互。 |
根據(jù)指定的參數(shù),您將獲得如下信息:
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/json'
);
$url = 'https://dbconvert.com/';
$data = '{"url":"' . $url . '","type": "chrome","waitDelay": 0.5}';
$response = Requests::post('https://api.dataflowkit.com/v1/fetch?api_key=API-KEY', $headers, $data);
var_dump($response->body);
?>
用于訪問 Dataflow Kit API 的 PHP 腳本。
3.2. 例如,將上述代碼保存為“dfk-api.php”
3.3. 現(xiàn)在添加在?https://account.dataflowkit.com/settings?找到的實際 API Key 來代替 API-KEY。它看起來像“ab5cc2a84f7efab1693e8fc72he5f7e844b1bf5cbad9ea33”。請參閱步驟 #1。
3.4. 就這樣。現(xiàn)在,您可以運行腳本并從任何網(wǎng)站獲取呈現(xiàn)的 HTML 內(nèi)容。
構(gòu)建和運行 docker 鏡像來運行腳本甚至更簡單。
FROM php:7.4-cli
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
RUN git clone git://github.com/rmccue/Requests.git
COPY . /usr/src/dfk-api
RUN mv Requests /usr/src/dfk-api
WORKDIR /usr/src/dfk-api
CMD [ "php", "./dfk-api.php" ]
Dockerfile的
按照以下步驟構(gòu)建并運行調(diào)用Dataflow Kit HTML抓取API服務(wù)的PHP腳本:
docker build -t dfk-api-php .
4. 在新容器中運行命令
docker run -it --rm --name dfk-api-php dfk-api-php
隨意在?https://github.com/slotix/dfk-api-php?處分叉 Github 存儲庫并根據(jù)您的需求自定義代碼。
對服務(wù)器生成的純 HTML 網(wǎng)頁進(jìn)行 Web 抓取很簡單。您可以使用“PHP Requests”庫來獲取 HTML 內(nèi)容。
從動態(tài)生成的 Javascript 數(shù)據(jù)中抓取大量數(shù)據(jù)時,您可能會遇到以下問題:
同樣,您可以創(chuàng)建PHP腳本以將網(wǎng)頁保存為PDF或截取屏幕截圖。
顯然,在抓取網(wǎng)頁之后的下一步是從呈現(xiàn)的 HTML 中提取特定數(shù)據(jù)。根據(jù)網(wǎng)站的不同,它可能是一個單獨的 HTML 元素,如圖像、文本、鏈接。或者,例如,電子商務(wù)網(wǎng)站將頁面上的多個產(chǎn)品列為按某些模式分組的數(shù)據(jù)塊。
您可以使用專用頁面上提供的其他 PHP 代碼生成器來構(gòu)建 PHP 腳本,以發(fā)出請求以抓取各種網(wǎng)站。
原文鏈接:https://dataflowkit.com/blog/php-api/