久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

告別自建瀏覽器池:Ace Data Cloud 動態(tài)渲染與網(wǎng)頁提取實(shí)戰(zhàn)

告別自建瀏覽器池:Ace Data Cloud 動態(tài)渲染與網(wǎng)頁提取實(shí)戰(zhàn) 1. 瀏覽器池這件事為什么成了團(tuán)隊(duì)的隱形負(fù)擔(dān)做過數(shù)據(jù)采集或者網(wǎng)頁內(nèi)容提取的人大概率都經(jīng)歷過這樣一個階段一開始用requests加個BeautifulSoup就能搞定后來發(fā)現(xiàn)頁面是 JS 動態(tài)渲染的于是換成 Selenium再后來發(fā)現(xiàn)單線程太慢于是上多線程多線程一跑瀏覽器實(shí)例互相打架內(nèi)存飆升于是開始琢磨瀏覽器池。這條路我走過不止一次。每次項(xiàng)目重啟瀏覽器池這塊的代碼幾乎都是復(fù)制粘貼過來的但每次都會踩到不一樣的坑。Chrome 版本升級了驅(qū)動對不上服務(wù)器內(nèi)存不夠跑了十幾個實(shí)例就 OOM頁面加載超時實(shí)例卡死不會自動回收并發(fā)一高各種Target closed、Session not created的報錯鋪天蓋地。瀏覽器池本質(zhì)上是一個資源調(diào)度問題它要解決的核心矛盾是動態(tài)網(wǎng)頁渲染需要完整的瀏覽器環(huán)境而瀏覽器本身是重量級進(jìn)程啟動慢、吃內(nèi)存、容易崩。你需要在“并發(fā)能力”和“資源消耗”之間找一個平衡點(diǎn)還要處理實(shí)例的健康檢查、故障恢復(fù)、超時回收。這些東西寫起來不難但寫好很難維護(hù)好更難。Ace Data Cloud 這個項(xiàng)目標(biāo)題之所以吸引我是因?yàn)樗苯哟林辛诉@個痛點(diǎn)——別再自己維護(hù)瀏覽器池了。這句話背后代表的是一種思路轉(zhuǎn)變把瀏覽器渲染這件事從“自建基礎(chǔ)設(shè)施”變成“調(diào)用一個服務(wù)”。就像你不會自己搭一個 MySQL 集群來存幾行配置數(shù)據(jù)一樣動態(tài)網(wǎng)頁渲染也不應(yīng)該成為每個團(tuán)隊(duì)的必修課。這篇文章我會從瀏覽器池的實(shí)際痛點(diǎn)出發(fā)拆解 Ace Data Cloud 這類渲染服務(wù)的設(shè)計(jì)思路講清楚它背后的技術(shù)原理然后給出完整的實(shí)操流程和踩坑經(jīng)驗(yàn)。不管你是剛開始接觸動態(tài)網(wǎng)頁采集還是已經(jīng)被瀏覽器池折磨了很久應(yīng)該都能從中找到有用的東西。2. 瀏覽器池的真實(shí)成本不只是寫代碼那么簡單2.1 一個典型瀏覽器池的完整生命周期很多人對瀏覽器池的認(rèn)知停留在“啟動幾個 Chrome 實(shí)例輪流用”這個層面。但真正在生產(chǎn)環(huán)境跑起來你需要處理的事情遠(yuǎn)不止這些。一個完整的瀏覽器池至少包含以下環(huán)節(jié)實(shí)例初始化啟動瀏覽器進(jìn)程配置啟動參數(shù)無頭模式、禁用圖片、禁用 GPU 等建立連接健康檢查定期檢測實(shí)例是否存活頁面是否能正常加載任務(wù)分配從隊(duì)列中取任務(wù)分配給空閑實(shí)例超時控制頁面加載超時、腳本執(zhí)行超時、整體任務(wù)超時三層超時缺一不可異?;謴?fù)實(shí)例崩潰后自動重啟任務(wù)重新入隊(duì)資源回收任務(wù)完成后清理頁面狀態(tài)cookie、localStorage、緩存避免污染下一個任務(wù)優(yōu)雅關(guān)閉服務(wù)停止時等待進(jìn)行中的任務(wù)完成釋放所有實(shí)例這還只是單機(jī)版本。如果要分布式部署還要加上服務(wù)注冊發(fā)現(xiàn)、負(fù)載均衡、跨節(jié)點(diǎn)任務(wù)調(diào)度。代碼量輕松上千行而且每一行都可能成為故障點(diǎn)。我見過一個團(tuán)隊(duì)瀏覽器池代碼寫了三千多行光是處理各種 Chrome 崩潰的邊界情況就占了三分之一。更麻煩的是Chrome 每次大版本升級總有一些行為變化導(dǎo)致原來的代碼需要調(diào)整。這個維護(hù)成本是持續(xù)性的不會因?yàn)槟銓懲炅司拖А?.2 資源消耗的賬要算清楚瀏覽器池最容易被低估的是資源消耗。一個無頭 Chrome 實(shí)例即使什么都不做內(nèi)存占用也在 100MB 到 300MB 之間。如果頁面復(fù)雜、加載了大量 JS單個實(shí)例吃到 500MB 甚至 1GB 都很正常。假設(shè)你要支撐 20 個并發(fā)渲染任務(wù)按每個實(shí)例 300MB 算光瀏覽器就要吃掉 6GB 內(nèi)存。這還沒算上操作系統(tǒng)緩存、你的應(yīng)用程序本身、以及各種中間件的開銷。一臺 8GB 的服務(wù)器實(shí)際能穩(wěn)定支撐的并發(fā)數(shù)可能只有 10 到 15 個。CPU 方面頁面渲染是計(jì)算密集型操作。JS 執(zhí)行、DOM 構(gòu)建、樣式計(jì)算、布局、繪制每一步都在消耗 CPU。如果頁面里有復(fù)雜的動畫或者大量數(shù)據(jù)可視化比如 ECharts 渲染幾萬個數(shù)據(jù)點(diǎn)單個頁面的渲染就能把一個核跑滿。這里有個常見的誤區(qū)很多人覺得無頭模式比有頭模式省資源。實(shí)際上無頭模式省的是顯示相關(guān)的開銷JS 引擎和渲染引擎的消耗是一樣的。對于計(jì)算密集型的頁面無頭模式的性能提升非常有限。2.3 那些文檔里不會寫的坑瀏覽器池的坑很多是只有在生產(chǎn)環(huán)境才能遇到的。我整理了幾個印象最深的內(nèi)存泄漏是慢性毒藥。Chrome 本身有內(nèi)存回收機(jī)制但長時間運(yùn)行的實(shí)例內(nèi)存占用會緩慢上升。你可能跑了一天都沒事第二天早上發(fā)現(xiàn)所有實(shí)例都變成了僵尸進(jìn)程。解決辦法是定期重啟實(shí)例比如每處理 100 個任務(wù)就重啟一次但這又增加了任務(wù)延遲。頁面之間的狀態(tài)污染。同一個實(shí)例處理完 A 頁面后cookie、localStorage、IndexedDB 里可能還殘留著數(shù)據(jù)。如果 B 頁面恰好依賴這些狀態(tài)就會出現(xiàn)莫名其妙的 bug。徹底的隔離需要每個任務(wù)用全新的 browser context但這又增加了開銷。并發(fā)數(shù)不是越高越好。我試過在一臺 16GB 的機(jī)器上跑 30 個并發(fā)實(shí)例結(jié)果就是系統(tǒng)頻繁 swap整體吞吐量反而下降。后來壓測發(fā)現(xiàn)這臺機(jī)器的最佳并發(fā)數(shù)在 12 到 15 之間。超過這個數(shù)任務(wù)排隊(duì)時間反而更長。Chrome 版本升級是定時炸彈。某次 Chrome 從 114 升級到 115我們有個頁面的截圖功能突然全黑。排查了半天才發(fā)現(xiàn)是新版本對某些 CSS 屬性的渲染行為變了。這種問題防不勝防只能靠完善的監(jiān)控和快速的回滾機(jī)制。3. Ace Data Cloud 的解題思路把渲染變成一次 API 調(diào)用3.1 核心設(shè)計(jì)理念關(guān)注點(diǎn)分離Ace Data Cloud 這類服務(wù)的核心思路是把“瀏覽器管理”和“網(wǎng)頁渲染”這兩件事徹底分開。你的代碼只需要關(guān)心“我要渲染哪個頁面拿到什么數(shù)據(jù)”至于瀏覽器實(shí)例從哪來、怎么調(diào)度、怎么回收全部交給服務(wù)端處理。這其實(shí)是一種關(guān)注點(diǎn)分離的設(shè)計(jì)哲學(xué)。在軟件工程里我們一直在做類似的事情不會自己實(shí)現(xiàn) TCP 協(xié)議而是用 HTTP 庫不會自己管理磁盤塊而是用文件系統(tǒng)。瀏覽器池也到了應(yīng)該被抽象掉的階段。從架構(gòu)上看這類服務(wù)通常包含幾個核心組件渲染集群實(shí)際運(yùn)行瀏覽器實(shí)例的機(jī)器集群負(fù)責(zé)頁面加載和內(nèi)容提取調(diào)度層接收請求分配渲染任務(wù)管理任務(wù)隊(duì)列和優(yōu)先級提取引擎在頁面渲染完成后按照指定規(guī)則提取數(shù)據(jù)CSS 選擇器、XPath、正則等結(jié)果處理將提取結(jié)果格式化JSON、Markdown、HTML 等返回給調(diào)用方對你來說這些組件都是透明的。你看到的只是一個 HTTP 接口傳入 URL 和提取規(guī)則拿到結(jié)構(gòu)化數(shù)據(jù)。3.2 為什么是 WebExtrator 而不是自己寫爬蟲項(xiàng)目標(biāo)題里提到了 WebExtrator 這個關(guān)鍵詞這應(yīng)該是 Ace Data Cloud 提供的一個具體功能模塊。它的定位是網(wǎng)頁內(nèi)容提取器輸入一個 URL輸出頁面上的結(jié)構(gòu)化內(nèi)容。自己寫爬蟲和用 WebExtrator 的區(qū)別有點(diǎn)像自己做飯和點(diǎn)外賣的區(qū)別。自己做飯食材、調(diào)料、火候都要自己掌控做得好確實(shí)更合口味但時間成本高而且每次都要洗碗。點(diǎn)外賣你只需要說“我要吃什么”剩下的交給平臺雖然選擇受限于菜單但效率高得多。WebExtrator 的價值在于它把常見的提取需求標(biāo)準(zhǔn)化了。比如提取頁面正文內(nèi)容自動去除導(dǎo)航、廣告、頁腳提取指定 CSS 選擇器的元素提取頁面上的所有鏈接提取結(jié)構(gòu)化數(shù)據(jù)JSON-LD、微數(shù)據(jù)將頁面轉(zhuǎn)換為 Markdown 格式這些需求在數(shù)據(jù)采集、內(nèi)容聚合、競品分析等場景中非常常見。如果每個項(xiàng)目都自己實(shí)現(xiàn)一遍就是重復(fù)造輪子。3.3 動態(tài)渲染的技術(shù)實(shí)現(xiàn)路徑Ace Data Cloud 處理動態(tài)網(wǎng)頁渲染底層大概率是基于無頭瀏覽器Headless Chrome 或類似方案。但和自建瀏覽器池不同的是它在幾個關(guān)鍵環(huán)節(jié)做了優(yōu)化。實(shí)例預(yù)熱。服務(wù)端會維護(hù)一個預(yù)熱好的瀏覽器實(shí)例池請求到來時直接分配不需要等待瀏覽器啟動。瀏覽器冷啟動通常需要 1 到 3 秒預(yù)熱可以把這部分時間省掉。智能等待。動態(tài)頁面的難點(diǎn)在于“什么時候算加載完成”。等load事件很多頁面在load之后還在異步加載數(shù)據(jù)。等固定時間要么浪費(fèi)要么不夠。Ace Data Cloud 應(yīng)該實(shí)現(xiàn)了更智能的等待策略比如等待網(wǎng)絡(luò)空閑、等待特定元素出現(xiàn)、等待 DOM 穩(wěn)定等。資源攔截。對于只需要提取文本內(nèi)容的場景圖片、字體、媒體文件都是不必要的。服務(wù)端可以攔截這些請求只加載 HTML、CSS、JS大幅提升加載速度。我實(shí)測過禁用圖片加載后頁面渲染時間平均能減少 30% 到 50%。并發(fā)控制。服務(wù)端會根據(jù)集群的負(fù)載情況動態(tài)調(diào)整并發(fā)數(shù)避免單個用戶的任務(wù)擠占其他用戶的資源。這比自己在單機(jī)上硬扛要可靠得多。4. 從零接入 Ace Data Cloud 的完整實(shí)操4.1 準(zhǔn)備工作賬號、密鑰與基礎(chǔ)環(huán)境接入任何云服務(wù)的第一步都是拿到訪問憑證。Ace Data Cloud 應(yīng)該會提供一個 API Key你需要在請求頭里帶上它來證明身份。假設(shè)你已經(jīng)拿到了 API Key接下來需要準(zhǔn)備一個能發(fā) HTTP 請求的環(huán)境。Python 的話requests庫就夠了Node.js 用axios或者原生的fetch也行。我這里用 Python 演示因?yàn)閿?shù)據(jù)處理場景下 Python 的生態(tài)更成熟。pip install requests如果你需要處理返回的 Markdown 內(nèi)容可能還需要markdown庫來做后續(xù)解析。如果返回的是 JSON標(biāo)準(zhǔn)庫的json模塊就夠了。提示API Key 不要硬編碼在代碼里用環(huán)境變量或者配置文件管理。這是基本的安全習(xí)慣但我在很多人的示例代碼里看到 Key 直接寫在源碼里然后不小心提交到了公開倉庫。4.2 第一個請求渲染一個動態(tài)頁面假設(shè)我們要渲染一個用 Vue 或 React 構(gòu)建的單頁應(yīng)用頁面的內(nèi)容是通過 JS 異步加載的。用傳統(tǒng)的requests只能拿到一個空的 HTML 骨架但用 Ace Data Cloud 就能拿到渲染后的完整內(nèi)容。請求的基本結(jié)構(gòu)大概是這樣的import requests import os API_KEY os.environ.get(ACE_DATA_CLOUD_API_KEY) API_URL https://api.acedatacloud.com/v1/render # 示例地址以官方文檔為準(zhǔn) payload { url: https://example.com/dynamic-page, wait_until: networkidle, # 等待網(wǎng)絡(luò)空閑 timeout: 30, # 超時時間單位秒 extract: { type: markdown, # 提取為 Markdown 格式 selector: main # 只提取 main 元素內(nèi)的內(nèi)容 } } headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } response requests.post(API_URL, jsonpayload, headersheaders) result response.json() print(result[content])這個請求做了幾件事告訴服務(wù)端要渲染哪個 URL等待策略是什么超時多久以及渲染完成后怎么提取內(nèi)容。wait_until參數(shù)是關(guān)鍵。常見的取值有l(wèi)oad等待load事件觸發(fā)適合傳統(tǒng)頁面domcontentloaded等待 DOM 解析完成不等待資源加載networkidle等待網(wǎng)絡(luò)請求基本停止適合異步加載的頁面selector等待指定元素出現(xiàn)最精確但需要你知道頁面結(jié)構(gòu)我一般先用networkidle試如果發(fā)現(xiàn)內(nèi)容不全再換成selector指定具體元素。4.3 提取規(guī)則配置CSS 選擇器與 XPath 的取舍提取規(guī)則決定了你能從渲染后的頁面里拿到什么。Ace Data Cloud 應(yīng)該同時支持 CSS 選擇器和 XPath兩者各有適用場景。CSS 選擇器更簡潔適合大多數(shù)場景。比如article提取文章元素.content p提取 content 類下的所有直接子段落#main .title提取 main id 下的 title 類元素XPath更強(qiáng)大適合復(fù)雜條件。比如//div[classitem][position() 5]提取前 5 個 item//a[contains(href, detail)]提取鏈接中包含 detail 的所有 a 標(biāo)簽//h2/following-sibling::p[1]提取每個 h2 后面的第一個 p我的經(jīng)驗(yàn)是能用 CSS 選擇器就用 CSS 選擇器實(shí)在表達(dá)不了再用 XPath。CSS 選擇器的解析速度通常更快而且可讀性更好。如果你要提取的是頁面正文而不是特定元素直接用type: markdown讓服務(wù)端自動識別正文區(qū)域就行。這背后應(yīng)該是用了類似 Readability 的算法能自動去除導(dǎo)航、側(cè)邊欄、廣告等噪音。4.4 處理渲染結(jié)果從 JSON 到可用數(shù)據(jù)Ace Data Cloud 返回的結(jié)果通常是 JSON 格式包含提取到的內(nèi)容和一些元數(shù)據(jù)。一個典型的響應(yīng)結(jié)構(gòu)可能是這樣的{ code: 0, message: success, data: { url: https://example.com/dynamic-page, title: 頁面標(biāo)題, content: 提取到的 Markdown 內(nèi)容..., metadata: { render_time: 2.35, status_code: 200 } } }拿到結(jié)果后你需要根據(jù)業(yè)務(wù)需求做進(jìn)一步處理。如果是內(nèi)容聚合可能要把 Markdown 轉(zhuǎn)成 HTML 存到數(shù)據(jù)庫如果是數(shù)據(jù)分析可能要提取特定字段做統(tǒng)計(jì)。這里有個細(xì)節(jié)值得注意渲染時間這個元數(shù)據(jù)很有用。如果某個頁面的渲染時間突然變長可能是頁面本身變復(fù)雜了也可能是服務(wù)端負(fù)載高了。監(jiān)控這個指標(biāo)能幫你提前發(fā)現(xiàn)問題。4.5 批量渲染與并發(fā)控制單個頁面渲染跑通之后下一步就是批量處理。假設(shè)你有一個 URL 列表需要全部渲染并提取內(nèi)容。最樸素的做法是寫個 for 循環(huán)一個一個請求。但這樣效率太低因?yàn)槊總€請求都要等待網(wǎng)絡(luò)往返和渲染完成。更好的做法是用并發(fā)請求。import asyncio import aiohttp async def render_page(session, url): payload { url: url, wait_until: networkidle, extract: {type: markdown} } async with session.post(API_URL, jsonpayload, headersheaders) as resp: return await resp.json() async def batch_render(urls, concurrency5): semaphore asyncio.Semaphore(concurrency) async def limited_render(session, url): async with semaphore: return await render_page(session, url) async with aiohttp.ClientSession() as session: tasks [limited_render(session, url) for url in urls] return await asyncio.gather(*tasks)這里的concurrency參數(shù)控制同時發(fā)起的請求數(shù)。設(shè)太高會給服務(wù)端壓力也可能觸發(fā)限流設(shè)太低則效率不夠。我一般從 5 開始試根據(jù)響應(yīng)時間和錯誤率調(diào)整。注意并發(fā)控制不只是為了服務(wù)端也是為了你自己。如果同時發(fā)起幾百個請求你的網(wǎng)絡(luò)帶寬、內(nèi)存、文件描述符都可能成為瓶頸。而且一旦觸發(fā)限流所有請求都會失敗反而更慢。5. 渲染效果優(yōu)化與常見問題排查5.1 頁面渲染不完整的排查思路動態(tài)網(wǎng)頁渲染最常見的問題就是“內(nèi)容不全”。你明明在瀏覽器里能看到數(shù)據(jù)但通過服務(wù)渲染出來就是空的。這個問題通常有幾個原因等待策略不對。頁面數(shù)據(jù)是通過 AJAX 加載的但wait_until設(shè)成了domcontentloadedDOM 解析完就返回了AJAX 還沒回來。解決辦法是改成networkidle或者用selector等待具體的數(shù)據(jù)元素出現(xiàn)。內(nèi)容在 iframe 里。有些頁面把主要內(nèi)容放在 iframe 中而默認(rèn)的提取只處理主文檔。這種情況需要在請求參數(shù)里指定要處理的 frame。內(nèi)容需要滾動才加載。無限滾動的頁面初始只渲染可視區(qū)域的內(nèi)容。需要模擬滾動操作觸發(fā)后續(xù)加載。Ace Data Cloud 應(yīng)該提供了滾動相關(guān)的參數(shù)比如滾動次數(shù)或滾動到底部。反爬機(jī)制攔截。有些網(wǎng)站會檢測無頭瀏覽器返回空內(nèi)容或者驗(yàn)證碼頁面。這種情況比較復(fù)雜可能需要設(shè)置更真實(shí)的 User-Agent、啟用 stealth 模式等。不過 Ace Data Cloud 作為專業(yè)服務(wù)應(yīng)該在這方面有更多積累。排查的時候我習(xí)慣先讓服務(wù)返回完整的 HTML 快照看看渲染后的 DOM 里到底有沒有目標(biāo)內(nèi)容。如果有說明是提取規(guī)則的問題如果沒有說明是渲染環(huán)節(jié)的問題。5.2 渲染速度優(yōu)化的幾個實(shí)用技巧渲染速度直接影響你的采集效率。除了前面提到的禁用圖片加載還有幾個技巧合理設(shè)置超時。超時設(shè)太短頁面還沒加載完就斷了設(shè)太長遇到慢頁面會一直等。我的經(jīng)驗(yàn)值是普通頁面 15 到 20 秒復(fù)雜頁面 30 到 45 秒。超過這個時間還沒渲染完大概率是頁面本身有問題繼續(xù)等也沒意義。復(fù)用連接。HTTP 的 keep-alive 能省去每次請求的 TCP 握手和 TLS 協(xié)商時間。用requests.Session或者aiohttp.ClientSession都能自動復(fù)用連接。批量提交。如果服務(wù)支持批量接口把多個 URL 放在一個請求里提交能減少網(wǎng)絡(luò)往返次數(shù)。不過要注意單次批量不要太大否則一個失敗可能影響整批。緩存渲染結(jié)果。對于不經(jīng)常變化的頁面渲染一次后把結(jié)果緩存起來下次直接讀緩存??梢杂?URL 加時間戳做 key設(shè)置合理的過期時間。我實(shí)測過一個場景100 個頁面的渲染任務(wù)優(yōu)化前平均每個頁面 4.2 秒優(yōu)化后降到 2.1 秒。主要貢獻(xiàn)來自禁用圖片省了約 1 秒和連接復(fù)用省了約 0.5 秒剩下的來自等待策略的調(diào)整。5.3 常見錯誤碼與處理方案調(diào)用 API 難免遇到錯誤。下面是我整理的一些常見錯誤和處理方法錯誤碼含義可能原因處理方案401未授權(quán)API Key 錯誤或過期檢查 Key 是否正確是否已過期429請求過多觸發(fā)限流降低并發(fā)數(shù)增加請求間隔500服務(wù)端錯誤服務(wù)內(nèi)部異常重試如果持續(xù)出現(xiàn)聯(lián)系支持504網(wǎng)關(guān)超時頁面渲染超時增加 timeout 參數(shù)或檢查頁面是否可訪問1001頁面加載失敗URL 無法訪問檢查 URL 是否正確目標(biāo)站點(diǎn)是否可達(dá)1002提取規(guī)則無效選擇器語法錯誤檢查 CSS 選擇器或 XPath 語法1003內(nèi)容為空頁面沒有匹配的內(nèi)容檢查選擇器是否匹配頁面是否需要登錄對于 429 和 500 這類臨時性錯誤重試是有效的。但重試要有策略不要立即重試而是等一段時間比如 1 秒、2 秒、4 秒指數(shù)退避重試次數(shù)不要太多一般 3 次就夠了如果連續(xù)失敗說明不是偶發(fā)問題應(yīng)該停下來排查。5.4 內(nèi)容提取的精度調(diào)優(yōu)提取精度決定了你拿到的數(shù)據(jù)質(zhì)量。幾個調(diào)優(yōu)方向選擇器要足夠具體。div這種選擇器會匹配一大堆元素div.article-content p就精確得多。但也不要過于依賴復(fù)雜的層級關(guān)系頁面結(jié)構(gòu)一變就失效。比較好的做法是用語義化的類名或?qū)傩宰鳛殄^點(diǎn)。處理空白和換行。HTML 里的空白字符在渲染后可能變成多個空格或換行。提取后需要做規(guī)范化處理比如把連續(xù)空白替換成單個空格去掉首尾空白。處理相對鏈接。頁面里的鏈接可能是相對路徑提取后需要轉(zhuǎn)換成絕對路徑。這需要結(jié)合頁面的 base URL 來處理。處理編碼問題。有些頁面的編碼聲明不正確導(dǎo)致提取出來的中文是亂碼。需要在請求時指定編碼或者在提取后做編碼轉(zhuǎn)換。去重。如果頁面有重復(fù)的內(nèi)容塊比如推薦閱讀里出現(xiàn)了正文中的文章提取后需要去重??梢愿鶕?jù)內(nèi)容的哈希值或者關(guān)鍵字段來判斷。6. 從自建到托管遷移策略與成本對比6.1 什么情況下應(yīng)該考慮遷移不是所有場景都適合用托管服務(wù)。我總結(jié)了一個簡單的判斷標(biāo)準(zhǔn)適合遷移的場景團(tuán)隊(duì)沒有專門的運(yùn)維人員瀏覽器池的維護(hù)占用了大量開發(fā)時間采集量波動大自建池要么不夠用要么浪費(fèi)需要渲染的頁面類型多樣自建方案難以覆蓋所有情況對穩(wěn)定性要求高不能接受頻繁的實(shí)例崩潰和重啟適合自建的場景采集量非常大且穩(wěn)定自建的邊際成本更低有特殊的安全或合規(guī)要求數(shù)據(jù)不能經(jīng)過第三方需要深度定制渲染行為托管服務(wù)無法滿足團(tuán)隊(duì)有成熟的瀏覽器池方案維護(hù)成本已經(jīng)很低我的建議是先用托管服務(wù)快速驗(yàn)證業(yè)務(wù)邏輯等業(yè)務(wù)穩(wěn)定、量級明確之后再評估是否值得自建。很多項(xiàng)目在驗(yàn)證階段就死了根本到不了需要優(yōu)化成本的那一步。6.2 遷移過程中的兼容性處理如果你已經(jīng)有一套自建的瀏覽器池遷移到 Ace Data Cloud 需要做一些適配。接口層適配。把你原來的render_page(url)函數(shù)內(nèi)部實(shí)現(xiàn)從“從池里拿實(shí)例、渲染、歸還實(shí)例”改成“調(diào)用 API、解析響應(yīng)”。上層業(yè)務(wù)代碼不需要改動。提取邏輯遷移。原來用 Selenium 的find_element寫的提取邏輯要改成 CSS 選擇器或 XPath 表達(dá)式。大部分邏輯可以直接翻譯少數(shù)復(fù)雜的交互操作比如點(diǎn)擊按鈕后才出現(xiàn)的內(nèi)容可能需要用服務(wù)端支持的交互指令來實(shí)現(xiàn)。錯誤處理適配。原來的異常類型比如TimeoutException、WebDriverException要映射到新的錯誤碼。重試邏輯也要相應(yīng)調(diào)整。結(jié)果格式適配。原來可能直接返回 Selenium 的 WebElement 對象現(xiàn)在返回的是 JSON。需要把下游代碼里對 WebElement 的依賴改掉。遷移過程中建議保留原來的自建方案作為 fallback。當(dāng)托管服務(wù)出現(xiàn)問題時可以臨時切回自建池保證業(yè)務(wù)不中斷。6.3 成本結(jié)構(gòu)的真實(shí)對比成本這塊要算總賬不能只看 API 調(diào)用費(fèi)用。自建瀏覽器池的成本包括服務(wù)器成本至少一臺 8GB 內(nèi)存的機(jī)器云服務(wù)商價格大概每月 300 到 500 元開發(fā)成本初始開發(fā) 2 到 4 周后續(xù)維護(hù)每周至少 2 到 4 小時故障成本實(shí)例崩潰導(dǎo)致的任務(wù)失敗、數(shù)據(jù)丟失、業(yè)務(wù)中斷機(jī)會成本開發(fā)人員花在維護(hù)瀏覽器池上的時間本可以用來做更有價值的事托管服務(wù)的成本主要是 API 調(diào)用費(fèi)用通常按渲染次數(shù)或計(jì)算資源計(jì)費(fèi)。對于中小規(guī)模的采集需求托管服務(wù)的費(fèi)用可能比自建服務(wù)器還低而且省去了開發(fā)和維護(hù)成本。我算過一個賬一個中等規(guī)模的采集項(xiàng)目每月渲染約 10 萬次頁面。自建方案需要 2 臺 8GB 服務(wù)器約 800 元/月加上每周 3 小時的維護(hù)時間按人力成本折算約 1500 元/月總成本約 2300 元/月。托管服務(wù)按每次 0.01 元算10 萬次是 1000 元/月。差距很明顯。當(dāng)然量級越大自建的邊際成本優(yōu)勢越明顯。當(dāng)月渲染量超過 100 萬次時自建可能更劃算。但這個量級的項(xiàng)目通常也有專門的團(tuán)隊(duì)來維護(hù)了。7. 動態(tài)渲染之外Ace Data Cloud 還能做什么7.1 頁面截圖與 PDF 生成除了提取文本內(nèi)容Ace Data Cloud 這類服務(wù)通常還支持頁面截圖和 PDF 生成。這兩個功能在很多場景下很有用頁面存檔定期對重要頁面截圖作為內(nèi)容變更的證據(jù)報告生成把數(shù)據(jù)可視化頁面渲染成 PDF用于生成日報周報視覺回歸測試對比頁面改版前后的截圖發(fā)現(xiàn)意外的樣式變化截圖功能的關(guān)鍵參數(shù)是視口大小和截圖區(qū)域。視口大小決定了頁面的布局移動端和桌面端布局不同截圖區(qū)域決定了是截整個頁面還是只截可視區(qū)域。PDF 生成則需要注意分頁問題。長頁面轉(zhuǎn) PDF 時如果分頁位置不對可能會把表格或代碼塊截斷。好的服務(wù)會智能處理分頁避免內(nèi)容被切斷。7.2 結(jié)構(gòu)化數(shù)據(jù)提取很多網(wǎng)站會在頁面里嵌入結(jié)構(gòu)化數(shù)據(jù)比如 JSON-LD、微數(shù)據(jù)、RDFa。這些數(shù)據(jù)通常包含商品信息、文章元數(shù)據(jù)、評分等比從 HTML 里解析要準(zhǔn)確得多。Ace Data Cloud 應(yīng)該能自動識別并提取這些結(jié)構(gòu)化數(shù)據(jù)。對于電商價格監(jiān)控、內(nèi)容聚合、SEO 分析等場景這比解析 HTML 要可靠得多。7.3 與現(xiàn)有工作流的集成Ace Data Cloud 作為一個 API 服務(wù)可以很方便地集成到各種工作流中定時任務(wù)用 cron 或調(diào)度框架定期調(diào)用實(shí)現(xiàn)周期性采集消息隊(duì)列把渲染任務(wù)放入隊(duì)列消費(fèi)者從隊(duì)列取任務(wù)并調(diào)用 API數(shù)據(jù)管道渲染結(jié)果直接寫入數(shù)據(jù)庫或數(shù)據(jù)倉庫供后續(xù)分析低代碼平臺通過 HTTP 節(jié)點(diǎn)調(diào)用無需寫代碼就能實(shí)現(xiàn)采集我個人的習(xí)慣是把渲染任務(wù)和數(shù)據(jù)處理分開。渲染服務(wù)只負(fù)責(zé)把頁面變成結(jié)構(gòu)化數(shù)據(jù)數(shù)據(jù)處理服務(wù)負(fù)責(zé)清洗、存儲、分析。這樣職責(zé)清晰也方便獨(dú)立擴(kuò)展。8. 我踩過的坑和總結(jié)的經(jīng)驗(yàn)8.1 關(guān)于等待策略的選擇我一開始用networkidle作為默認(rèn)等待策略覺得它最智能。但后來發(fā)現(xiàn)有些頁面有輪詢請求比如每隔幾秒檢查一次更新網(wǎng)絡(luò)永遠(yuǎn)不會空閑導(dǎo)致每次都等到超時。后來我改成優(yōu)先用selector等待具體元素。比如我知道頁面渲染完成后會出現(xiàn).data-table這個元素就等它出現(xiàn)。這樣既準(zhǔn)確又快。只有不知道具體元素時才退回到networkidle。還有一個細(xì)節(jié)networkidle通常有個時間窗口比如 500ms 內(nèi)沒有新請求就算空閑。這個窗口設(shè)太小容易誤判設(shè)太大又浪費(fèi)時間。我一般用默認(rèn)值遇到問題再調(diào)整。8.2 關(guān)于并發(fā)數(shù)的動態(tài)調(diào)整固定并發(fā)數(shù)在不同時間段的效果可能完全不同。白天目標(biāo)網(wǎng)站響應(yīng)快并發(fā)可以高一些晚上響應(yīng)慢并發(fā)高了反而容易超時。我后來實(shí)現(xiàn)了一個簡單的自適應(yīng)邏輯記錄最近 100 個請求的平均響應(yīng)時間和錯誤率如果響應(yīng)時間變長或錯誤率上升就降低并發(fā)數(shù)反之則提高。這樣能在不同負(fù)載下都保持較好的吞吐量。當(dāng)然如果你用的是托管服務(wù)服務(wù)端可能已經(jīng)有類似的機(jī)制了。你只需要控制好客戶端的并發(fā)數(shù)不要給服務(wù)端太大壓力。8.3 關(guān)于結(jié)果校驗(yàn)不要假設(shè)渲染結(jié)果一定正確。我遇到過好幾次頁面渲染成功了但提取出來的內(nèi)容是空的或者內(nèi)容明顯不對。后來我加了一個簡單的校驗(yàn)邏輯檢查提取結(jié)果的長度是否在合理范圍內(nèi)檢查關(guān)鍵字段是否存在檢查內(nèi)容是否包含預(yù)期的關(guān)鍵詞。如果校驗(yàn)不通過就標(biāo)記為可疑結(jié)果人工復(fù)查或者重新渲染。這個校驗(yàn)邏輯幫我發(fā)現(xiàn)了好幾個隱蔽的問題比如某個頁面的選擇器在改版后失效了但因?yàn)闆]有報錯一直沒被發(fā)現(xiàn)。8.4 關(guān)于成本控制托管服務(wù)雖然方便但如果不加控制費(fèi)用可能會超出預(yù)期。幾個控制成本的技巧緩存對不常變化的頁面渲染一次后緩存結(jié)果設(shè)置合理的過期時間按需渲染先用普通 HTTP 請求試試如果能拿到內(nèi)容就不調(diào)用渲染服務(wù)限制重試重試次數(shù)不要太多避免因?yàn)橐粋€壞頁面反復(fù)消耗資源監(jiān)控用量設(shè)置用量告警當(dāng)月度用量接近預(yù)算時及時調(diào)整我見過一個團(tuán)隊(duì)因?yàn)闆]有做緩存同一個頁面每天渲染幾百次費(fèi)用是實(shí)際需要的十幾倍。加上緩存后費(fèi)用直接降了 80%。8.5 關(guān)于服務(wù)選型Ace Data Cloud 不是唯一的托管渲染服務(wù)選型時要考慮幾個因素覆蓋范圍支持哪些等待策略、提取方式、輸出格式穩(wěn)定性SLA 是多少歷史可用性如何價格計(jì)費(fèi)方式是否透明有沒有隱藏費(fèi)用支持文檔是否完善遇到問題能否及時得到支持合規(guī)數(shù)據(jù)如何處理是否符合你的合規(guī)要求我的建議是先用免費(fèi)額度或者試用版跑一遍核心場景確認(rèn)能滿足需求再正式接入。不要只看文檔就做決定實(shí)際跑起來才能發(fā)現(xiàn)真正的問題。動態(tài)網(wǎng)頁渲染這件事從自建瀏覽器池到用托管服務(wù)本質(zhì)上是從“造輪子”到“用輪子”的轉(zhuǎn)變。這個轉(zhuǎn)變在軟件行業(yè)一直在發(fā)生每一次都讓開發(fā)者能更專注于業(yè)務(wù)本身。Ace Data Cloud 這類服務(wù)的價值不在于它用了多先進(jìn)的技術(shù)而在于它把復(fù)雜的事情變簡單了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美高潮在线| 精品亚洲黄色片 国产精品导航一区二区| 91女神在线视频| 伦伦成年午夜免费视频| 中文字幕高清精品一区| 国产一区二区精品久久久不卡蜜臀 | 920日本午夜免费| 国产日韩在线播放av| 91 天天综合| 99热日| 欧美日韩免费专区在线| 色久综合| h色99999| 国产天天骚| 超碰人人在线| 秋霞欧美性爰视频| 国产精品久久久久久久毛片1| 国产毛片毛片4p懂色| 国产白丝AV| 欧美色图97| 玖玖综合色| 亚洲色人妻综合| 密桃99999| 日本肏逼视频在线观看| 午夜福利免费精品视频| 26uuu国产日韩综合在线观看| 亚洲国产丝袜熟女av| 91男人综合| 夜夜爽夜夜摸夜夜操免费视频| 双插在线| 亚洲 综合 第一页| 香蕉国产97| 亚洲综合射| 97视频7| 四虎AV影视国产精品亚洲精品| 天天日天天插| 久久天天摸| 裸体美女国产免费久久久网站| 久久中文字幕女同性恋一区| 麻豆精品三区视频| 亚州91| 久久免费少妇| www国产无码| 84YTCOM性无码| 日韩操啪| 午夜福利免费精品视频| 综合久久欧美| 精品国产少妇高潮视频| 久久精品老司| 97网站在线观看 | 欧美麻豆成人同性GⅤ在线| 国产精品一级特黄aaa大片在线观看 | 蜜臀精品1区2区| 欧洲综合视频| 老鸭窝日丰县女人| 男人综合网| 欧成人精品H无码| 女人综合网| 搡老女人老91妇女老熟女| A级国产欧美激情在线| 亚洲高清视频在线免费观看| 国产精品爱欲| 亚洲国产日韩欧美熟妇在线| 亚洲第91页| 综合天天。| 日本在线激情一区二区三区| 91偷拍欧美亚洲| 91老熟女老女人国产老太| 裸体美女久久久| 亚洲猛交| 超97在线精品视频| 亚洲18禁| 香蕉视频欧美一卡二卡| 国产AV高清AV无码| 超碰中文字幕人妻草一区| 日韩欧美久久婷婷网站| 国产精品久久久久久久无码AV| 国产精品网址| 嗯啊不要在线观看嗯啊| ai欧美亚洲小说| 欧美亚洲手机在线| 中文字幕黑人大片| 色五月AV在线| ji熟女.com| 五月香婷婷| 老师充足的奶水小说| 玖玖无码超碰| 亚洲欧综合另类无码一区| 夜夜爽爽爽| 粉嫩AV输入| 天天肏天天干| 91在线页| 超碰人妻久久| 亭亭在线资源| 久久久精品91八戒| 久热69九色熟妇97| 国内一级精品| 我要看免费韩日黄片| 青青草大香蕉在线视频| 少妇熟女1区2区3区| 亚洲激情综合| 免费无码国产精品v片在线观看| 男人久久天堂| 97综合久第一页| 2019精品国产无码成人| 精品国产自在在线99| 少妇九九九九| 日韩中文字幕人妻视频| 中文字幕少妇色| 亚洲综合伊人无码久久| 影音先锋国产精品| 蜜臀一二三区| 黄色视频特级毛片| 91美女视频直播| 午夜理论片在线观看免费| 99国产精品免费| 中日韩一区二区三区欧美| 99这里有精品视频| 人妻少妇精品视频一区二区三区| 婷婷五月天福利| 国产91丝袜在线播放蜜月| 人妻大相焦在线| av黄图片在线观看| 熟妇高潮一区二区免费视频| 丝袜足交视频| 久久男人网| 亚洲高清无毛一区二区| 日本免费一区二区不卡| 69精品久久久久中文字幕| 性欧美精| 激情四射五月天| 婷婷午夜清品久久久久久久性色视频观| 日本肏逼视频在线观看| 国产成人五月天丁香花| 天天色香欲综合网| 在线播放成人高清免费视频| 久久久性爱视频| 伊人久久综合影院| 97 国产精品| 九九九九九九九精品视频| 欧亚日韩中文在线| 日韩一级二级在线| A 在线网址| 亭亭在线资源| 综合网,亚洲,欧美| 久久男人精品| 超碰美女97| AND人妻系列| 草草影院最新网址| 91狠狠综合久久| 美女露胸露奶头| 最新av网站在线观看| 亚洲国产精品久久久男人的天堂| 91操人| 97网色| 久久精品国产99国产精品亚洲| 欧美日本国产日韩激情视频| 97视频在线播放| a人欧美综合天堂麻豆| 日韩探花精品在线视频| 国产精品久久久久久久久久久久| 国产精品久久久久久久久久久久久久久久久久| 美女操逼福利视频| 国产精品第一区第一页| 99999久久精| 青青草啪啪网| 99热免费| 全球成人中文在线| 在线亚洲 欧美 日本专区| av久日| 青青草原人妻| 丁香五月性爱| 国产精品无码AV网站| 中文字幕第9页萱萱影音先锋| 97精品一区| 久草新免费| 亚洲色图久久精品蜜| 日本熟女免费視颖| 亚洲97| 久久久内射良家| 九九热免费国产视频婷婷伊人| 国产99精品一区二区三区免费| 色97欧美| 色淫网站优优视频| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 欧美天堂在线| 久久九九热| 无码久| 成人A片男人的天堂| 性爱久久| 久热免费视频| 99热精品在线播放| 亚洲第一在线视频| 在线看免费无码AV天堂的| 日本一级婬片试看三分钟| 日韩一级欧美一级国产一级台湾 | 免费精品中文字幕| 操www| 水多多映视AV| 欧美资源| 丰满人妻一区二区三区四区| 日韩三级av片| 日本不卡一二区| 情色图区| 久久久久久综合久久伊人蜜月| 色香综合天天影视综合 | 蜜桃狠狠色伊人亚洲综合| 日少妇亚洲版| 青青草啪啪网| 精人妻无码一区二区三区伊人直播 | 超碰欧美97资源| 天天超级碰碰碰| 亚洲男人的天堂网| 嫩草黄页| 国语精品对白| 日韩性爱一级片| 神马久久久久| 国产精品ⅴ无码大片在线看.| 免费a v| 国产精品嫩草影院午夜两性| 无码国产精品久久久久| 狠狠干狠狠色| 久久这里精品国产99丫e6| 麻豆婷婷成人一二三| 青青草成人视频在线观看二区| 国产第二页| 男人天堂导航| 亚洲熟伦熟妇AV无码春色| 亚洲精品三区在线观看| 99碰碰| 亚洲AV无码天美传媒一区| 亚洲天堂另类小说男人| 深夜激情| 老熟妇乱轮| 欧美日韩免费性爱| 色啪网| 99国产天美| 国产风韵犹存熟妇三区| 大香蕉日韩| 精品亚洲成人免费在线| 开心五月婷婷| 成人一级二级| 99无码狠狠久久| 色欲蜜臀AV| 日韩人妻少妇 一区二区三区| 旡码电影特区| 看看日B真人视频| 97这里只有精品| 日本熟女中文字幕一区| 大香樵伊人网| 亚洲在线观看| 人人操人人舒服| 熟女乱伦二区| 色天堂在线观看| 国产91 丝袜在线播放00-百度| 脫衣舞一区二区三区| 亚洲欧洲综合视频在线| 欧美青青视频| 久久久蜜桃臀无码视频| 91精品伊人久久久大香线蕉91| 另类综合另类| 国产麻豆91欧美一区二区久久婷婷国产精品| 亚洲综合影院| 91久久久久久久| 日日橹狠狠爱欧美超碰| 天美传媒AV在线播放| 成人aⅴ一区二区三区| 欧美熟爽综合| 九久精品| 97精品一二区| 久久欧美激情| 日本理论在线| 伊人aaa| 国产亚洲精品一区二区三区| 四虎永久在线精品免费网址| 一中国女人毛片水真多| 调教熟妇 久久久久久| 96精品久久久| 日本3级一区二区免费| 999熟女精品| 天天综合网日韩7799| 中文字幕亚洲欧美在线不卡| 丰满美女一级毛片在线播放| 九九久久国产精品| 久久久久久99AV无码免费网站| 亚洲综合色男人网| 天天日天天干少妇日| 任你爽视频| 91狠狠狠| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久婷婷综合国际产色怕| 91欧美另类| 国产成年女人免费视频播放a| 91新在线欧美| 无码免费在线观看黄色片| AV一二区| 人人玩人人添人人澡免费| 人妻精品综合中文字幕在线 | 老熟女搡BBBB搡BBBB视频| 性色中出| 国产精品久久久久综合| 校园春色 亚洲| 婷婷久草| 免费国产视频| 风月影院男女十八禁| 国产精品自产拍在线观看社区| 碰人碰碰人人开房人肉| 91操碰| 97碰| 日韩欧美偷拍美女视频| 无码精品蜜桃一区二区三区ww| 久久草视频污视频| 国产又色又爽又舒服的三级视频| 欧美偷拍| 日本女厕偷拍| 免费啪啪一级视频| 蜜臀久久久99久久久久 | 玖玖97综合| 亚洲色图尤物视频| 玖色av| 女优视频第10页| 人人操,人人插| 蜜桃臀AV在线| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 思思热国产在线视频| 亚洲青色欧美| 99精品久久久久久久婷婷蜜桃| 国产激情在线| 欧美暴力猛交| 99无码| 人人性爱视频免费| 97在线播放 | 久久久神马影院| 亚洲综合色男人网| 殴美在线AⅤ| 久久久久久九九九九| 99色日| 天天干,天天日| 日本高清免费一本视频在线观看| 无卡一区=区| 亚洲性天堂| 色婷婷婷五月天激情四射| 午夜免费福利视频一区| 久久免费精品视频免一| 日韩欧美大片免费高清啪啪| 欧成人在线| 久久久专区| 欧美三级一级| 99热亚洲天堂| 亚洲黄色影视| 丁香五月综合| 亚洲色 国产 欧美 日韩| 亚洲色综合| 久久精品一区二区三区蜜桃臀| 九九九综合精品| 六月激情婷婷| 国产树林里野战在线看| 国产精品永久免费10000| 91制服丝袜中文字幕| 久久亚洲天堂| 神马久久69| 中文字幕av久久爽Av| 九九九九九九九精品视频| 岛国网址国产 | 啪啪视频mP4| 婷婷五月影院| 亚洲夜夜欢无码一区二区 | 天堂射| 亚洲视频一二区| 粘花网06av视频| 99色悠悠| 韩国一区二区精品亚洲| 麻豆精品久久久久久久| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 欧洲亚洲人妻无码中字久久三区四区 | 黑人操一区二区| 国产一区二区三三视频| ..日韩av毛片精品久久久| 欧美日韩插逼视频| 日韩成人精品| 女人被男人桶爽视频网站| 懂色中文一区二区三区| 国产日韩欧美中文在线播放| 国产日韩手机视频在线| 乱伦一区二区三区‘| 精品丝袜无码一区二区三APP| 9国产超碰| 欧美大波激情xxxx| 欧美日韩电影成人在线| 日韩中文字幕精品一区在线| 岛国黄色大片网站| 麻豆国产尤物AV| 六九九九| 18岁禁 茉莉成人久久| 欧美色图偷拍另类| 精品白丝一区| 欧美激情专区| 午夜福利在线合集| 99啪啪视频| 精品超碰中文在线| 天美一二三在线观看Av| 亚洲精品1区| 91痴汉| 97这里只有精品| 国产无码精品高清| 国产精品99久久久www| 黄色AV影视| 欧美在线色图| 欧美色综合网| 中文日本免费高清| 欧美国产日韩清纯唯美| 久久偷拍人| 日本顶级天天操狠狠操夜夜操中文字幕| 亚洲国产婷婷在线播放| 91精品国产麻豆国产自产在| 男人亚洲91首页在线| 天天天乱色综合全| 人妻熟女一区二区三区视频| 九九精品99| 综合欧美日本三级| 日韩av三四区| 九九九不卡| 久久久久久亚洲Av无码精| 99re公开精品免费视频| 青青草视频这里只有精品| 素颜老阿姨乱情色| 婷婷色综合欧美日韩| 欧美性爱中文字幕无线码| 天天色粽合合合合合合合| 久久久久亚洲精品| 黄色免费网| 国产精品亚洲免费| 男人天堂网手机版婷婷| 人妻一区二区三区视频 | 亚州国产成人精品女人久久| 亚洲欧美综合| 99久久久久| 亚洲在高跟鞋自慰久久在色线| 亚洲欧洲日韩中文字幕一区| 青青伊人这里只有精品| 97人人爱人人做人人乐| 日本不卡在线二区三区| 岛国片在线观看视频亚洲| 99九九久久| 五月丁香激情四射| 一品道视频一区二区三区| 欧美色图在线视频少妇| 嫩呦国产一区二区三区AV| 99热99re超碰精品| 在线中文字幕视频| 99自拍视频在线| 中文字幕欧美日本乱码一线二线| 国产www色在线观看| 欧美色图天堂网m| 精品在线蜜臀| 艹我哪美一区无码| 99久草| 91一起操| 欧洲视频在线| 久久久com| 96国产精品| 首页中文字幕中文字幕免费| 色爽——AV| 国产女人高潮嗷嗷嗷叫小说| 久插综合| 翔田千里一区二区三区奶水| 1204av韩国| 性爱视频啪啪啪啪| 秋霞福利网| 黄色AAAAA欧美| 亚洲老司机123专区| 久久无码成人| 久男人久久| 1769精品一区二区三区| 色噜噜日韩精品| 天天躁日日躁AAAXX| 欧美色91| 日本熟妇熟色97一本在线观看| 日本一二区不卡| 少妇 综合| 极品色| 9 7超碰在线免费观看| 91P0RNY大屁股人妻| 69久久| 日本污ww视频网站| 欧美78p| 在线色资源| 17c在线成人免费A片观看| 99国产精品久久久久久久成人热 | 青娱乐福利99| 玖玖草久草99蜜月一区二区三区| 亚洲图片欧洲图片aⅴ| 97超碰欧美手机在线| 亚洲图片欧美在线视频| 91老熟妇| 嗯嗯啊啊好大好爽| 成人看片网站| 美女视频尤物网在线看| 天天综合站| 亚州伊人色综台| 一级二级三级黑人无码| 51一区二区三区| 人妻啊啊人妻啊| 中文字幕乱码人妻二区三区| 99这里都是精品| 少妇二级| 围产精品一区二区三区视频播放| 欧成人精品一区二区三区| 春色校园综合网| 尤物国产一区在线观看| 亚洲欧美国产va在线播放频| 亚洲综合草草| 东北老女人的激情视频| 色九月婷婷| 亚欧成人综合影院| 精品91| 伊人午夜福利视频| 一区二区精品更新提醒| 婷婷在线精品| 神马久久久久久伦理片| 狠狠婷婷亚洲中文综合久久| 久射吧| 麻豆伊人网| 欧美色图天堂在线| 人、人、摸,人、人、草| 欧美岛国精品在线观看| 91亚洲综合在线| 日本免费一区二区不卡 | 国内一级精品| 久久久内射良家| 夜夜嗷嗷一区二区| 天天摸天天插天天日| 日韩性爱网址| 欧美日韩国产高清在线一二三区 | 国产熟女完整版中字| 超碰免费人妻在线| 78超碰| 久久久久女教师免费一区 | 亚洲 欧美 日韩 国产一区二区| 精品大全99999| 国产亚洲精品美女| 久久久∴| 色综和网| 啊啊啊啊啊啊啊啊啊啊在线观看| 色婷婷综合久久久久中文一区二区| 97人人干| AV九九| 久久xxxx| 思思热在线| 丁香色婷婷| 九九黄色网| 大香蕉啪啪网| 加勒比无码一区二区三区| 日本午夜久久电影| 五月丁香色色网| 毛片电影一区二区三区| 国产精品三级视频网站| 亚洲激情四射| 天天影视色香色欲| 91在线美女| 亚洲天堂另类小说男人| 99操| 亚洲综合一| 啊啊啊啊啊舒服| 日日骚av| 日韩精品-原创伙伴| 九九九九九精品| A 天堂| 性爱综合一区二区| 综合久久久久久久综合网| 久草国产在线视频| 操逼操操操91| 久久熟女人| 欧美一二三区四五区| 亚洲激情色片| 97综合久第一页| 亚洲图片欧美偷拍| 白丝被操91| 久草国产在线视频| 日本欧美成人片AAAA| 日韩三级久久久| 大香伊人在线一区| 青青草在线视频美女| 欧美宗合色| 欧美性爱精品七区| 久久一级无码精品毛片6| 国产亚洲99久久精品| 老熟女91av| 亚欧美综合网。| 96国产精品| 成人五级久久| 天美麻花大全视频| 台湾肥佬网一区二区三区| 久欲AV| 97超碰护士| 鸡巴插逼视频| 91色碰| 久久久熟女一区| 中文字幕三四区| 国产操逼逼网| 国产在线不卡导航| 四虎免费在线播放| 天天躁日日躁成人字幕aⅴ| 综合欧美日本三级| 亚洲蜜臀懂色| 日夜精品| 国产亚洲精品玖玖玖在线观看| 色噜噜综合在线| 另类专区加勒比| a亚洲欧美色欲| 欧美日韩第一页| 黄呦呦在线| 啊啊啊想要| 日韩一级片| 久久久专区| 国产美女在线精品免费看| 亚洲AV永久无码一区仙野| 日韩传媒在线| 亚洲欧美人妻| 狠狠狠狠狠狠| 欧美综合色| 全免费a敌肛交毛片免费| 精彩国产视频播放1区2区| 欧美丝袜中文字幕07在线| 日本视频在线观看污污污| 最新亚洲风情电影| 国产在线视频午夜精华在| 中文字幕成人| 亚洲清纯综合| www.色婷婷色综合| 乱色老一区二区三区的观看方式 | 少妇被玩视频二三区| 91欧美经典| 超碰人人色| 久久精品一区一起草| 国产欧美日韩精品中文| 欧美性综合| 国产Aα| 欧美 熟女 日韩| 超碰国产精品无码| 黄网站黄视频网站进入口| 色综合av综合久久| 男人天堂站| 97爱爱| 久久最新免费视频23| 亚洲少妇在线观看| 天天透伊人| 久久伊人最新网址视频| 91是天天| 操逼视频国产无套| 久草综合视频| 免费公开人人操| 偷拍片久久| 无遮挡h肉动漫在线观看| 熟女熟妇伦久久影院毛片一区二区| 国产精品无码av在线 | 午夜福利av电影在线| 91丝袜熟女| 操高情无码| 97久久久久久久久久| 色九月婷婷| 国产女人视频三四五区| 女一区二区| 中文字幕一区二区在线日韩精品| 啊啊啊啊好大好硬啊啊啊啊啊 | 97在线观看免费| 色噜噜婷婷| 3PAV乱伦视频| 精品人妻一区春色| 大香蕉五月天| 91这里只有精品| 欧美综合制服在线| 亚洲欧洲网站免费观看| 91亚洲综合| 91AV天堂| 999久久久精品国产| 91P0RNY大屁股人妻| 九九九精品一区二区无码| 久久精视频美日韩在线视频| 久久久91| 密臀视频一区二区三区| 丁香五月天堂| 99老司机精品视频在线观看| 久久人妻一区二区三区高清| 狠狠 91| 性影在线视频| 97资源久久| 欧美日韩亚洲五月天婷婷| 亚洲一区中文字幕一区| 亚洲中文字幕在线视频一区二区| 夜夜操中文字幕| 亚洲男人的天堂亚洲| 一级特黄aaa大片在线观看成人一级片在线观看 | 99热超碰| 国模吧 一区二区三区| 69视频入口| 国产精品禁久久久精品| 天天综合欧美综合| 五月丁香久久| 欧美视频一区二区在线| 国产精品爆乳懂色蜜乳| 超碰4A| 91强在线播放| 超碰97资源中文字幕| 操一区| 欧美不卡二区| 久久无码一区二区二三区性色| 国产精品另类| 大香蕉92| 成人热久久精品| 久久久久密| 久久97| 亚洲免费人妻在| 国产高清精品一区二区三区毛片| 91黑人狂躁丰满熟妇| 91成人亚洲色图| 亚洲自拍欧美色综合| 中文字幕少妇色| 日韩pv中文| 男人的天堂2010| 欧美日韩99| 黄色av一区二区在线| 在线A日本| 国产对白刺激视频| 天天夜躁日日躁狠狠2002| 综合久久9| 91性网| 99999久久精| 97久久综合网| 撸无码不卡免费视频| 福利五区| 亚洲久草AV色图| 中文子幕一二三| 九九av| 亚洲诱惑天堂| 人人九九精| 欧美成人精品一区二区男人蜜臀| 国产精品久久久久999| 激情四射五月天| 亚洲熟女偷拍在线观看| 亚州九九九精品视频| 91男同| 五十路成人在线视频二区三区| 啊啊啊久久久视频| 色偷偷综合91久久噜噜| 97在线播放| 日韩精品午夜操呦呦不卡影院| 校园春色 亚洲| 亚洲色图A| 精品国产乱码久久久久久网站入口| 人人妻人人爽一区二区三区| 亚洲动态色图| 搡老熟女免费视频| 啪啪啪东京| 午夜影美女日鸡鸡天天视频国产 | 天天夜夜rb| 97免费在线观看| 国产高清午夜成人在线观看| 欧美亚洲素人制服精品| 操逼啊啊啊91| 激情av| 中文字幕 av v| 亚州色图欧美| 色天天野狼综合社区| 91天天综合日韩欧美| 日韩激情电影中文字幕| 国产AV激情无码久久无码| 国产激情在线| 日韩在线女优天天干| 久久99草| 久草免费在线视频| 操人人| 欧美v亚洲v日韩v最新在线二区 | 欧美一区二区三区不卡高清视频| 高清国产成人无码| 国产超碰在线| 九热大香蕉| 精品人妻高清麻豆av| 婷婷丁香激情| 日韩av影片在线观看| 日本久操视频| 欲色啪| 国产精品com| 91成人精品在线播放| 亚洲AV无码天美传媒一区| 人人搡人人肉久久精品| 欧美亚洲首页| 日韩色欲久久一二三四区| 99操| 国产久久久久影院老熟女| 4虎在线观看| 夜间福利片1000无码| 亚洲日本加勒比在线| 亚洲91大片| 尤物av网站免费在线播放| 亚洲欧洲国产综合av| 妇女视频网站| 欧美少妇色图| 精品一区二区亚洲国产| 日本不卡二三区| 超碰97网站| 国模吧 一区二区三区| 91性生活久久久| 久久精品黄色| 自偷自拍的亚洲视频| 男人的天堂2000| 色综合一本| 日本三级中国三级99人妇网站| 98超碰日本| 日韩人妻一区二区| 人人操av| 久久精品操| 嫩草影院在线观看精品| 日韩三级在线观看mp4| 午夜精品久久99蜜桃的功能章节 | 国产路线专区| 婷婷久久五月| 四虎影视 亚洲无码| 欧美一级特黄淫片在线观看| 久艹伊人精品综合在线| 少妇综合| 大鸡巴久久久| 久久久96| 日本在线不卡123| 特污精品女优骚货黄色视频在线免费观看| 婷婷五月天激情网| 欧美亚洲综合999| 亚洲毛片一级带毛片基地| 加勒比综合九九99视频在线播放| 日韩熟女三十乱伦| 人妻精品综合中文字幕在线| 夜夜爽夜夜爽| 久久大香蕉手机高清| 亚洲欧美天堂| 炮色五月| av毛片aaaaa免费看| 精品久久久久瑟瑟| 丁香五六月啪啪| 国产偷仑| 精品一区二区综合熟妇| 欧美日韩另类字幕中文| 日韩一区二区高清在线观看的| 伦理弟一页| 欧美强奸乱| 国产三级中文字幕粉嫩| 亚洲免费看片| 91人妻少妇| 久久欧洲| 国模无码一区二区三区在线| 欧美久久人体| 亚洲男人天堂Av| 亚洲天堂久久久久久粉红视频| 91人妻丝袜无码| 亚洲性爱乱操x| 超碰97在线色男人??| 操逼网站视频漫画国产| 日韩有码中文字幕女同性恋 | 久久永久无码人妻视频| 欧美亚洲一区二区久久久婷精品大包诱| 一区二区三区美女超清| 欧美久久久| 九九色综合| 日本乱人伦片中文三区| 亚洲素人网| 精品久热| 啪啪啪精品| 97操综合| 国产天美欧美| 日韩 欧美 另类 人妻| 亚洲激情在线| 久草精品国产蜜臀| 这里都是精品在线观看| 美女被啪到深处抽搐视频| 亚洲天堂人人妻| 色色五月天激情| 少妇高潮流水av免费| 日本亚欧爱爱| 91美乳| 亚洲AV成人无码一区二区三区在线观看| 人人妻人人澡人人爽久久av| 久久久久久久久久久久黄色| 熟女视频久久| 国产三级在线现体验区| 亚欧洲日韩国产精品| 妇女视频网站| 蜜臀少妇一区二区| 深夜国产一区二区三区在线看| 国产白丝AV| 超碰久久网| 午夜情侣自拍网站| 麻豆啪啪啪视频| 极品销魂美女一区二区| 中文字幕第二页| 国产少妇高潮| 欧美少妇一区二区三区| 欧美很很操视频| 很黄很色的视频在线观看| 天天久久| 91少妇高潮| 色综合超碰超| 婷婷激情一区二区三区俺也去| 免费一级视频特黄色大片| 国产一区二区三区白丝| 91久久久久久久久18| 91男女| 2017超碰| 日韩午夜国产| 午夜激情床戏激情| 色色亚洲| 色五月婷婷色| 无码乱人伦中文视频| 亚洲国产精品99久久久| 试看日韩黄片| 久艹日日日| 亚洲资源一区| 四季av一区二区凹凸精品小说| 91AV天堂| 97国产色图| 四虎免费看黄| 精品国产一区二区三区久久久蜜臀| 首页亚洲国产高跟丝袜诱惑视频| 久久久久亚洲Aⅴ无码| 亚洲一区二区三区不卡国产欧美| 亚洲精品久久久久毛片A片拉屎 | 亚洲精品a人片在线观看视| 日本熟女免费視颖| 国产亚洲精品激情| 久久免费99精品久久久久久| 粉嫩av平台| 国产精品久久久吖| 国产高清自拍视频| 成人性爱免费播放| 思思热在线视频在线| 色综合国产在线观看| 国产精品直播在线观看直播| 亚洲无码偷拍| 翔田千里无码一区| 欧美18 在线观看| 9丨亚洲一区二区在线| 亚洲色欲天天天堂色欲网女| 午夜a成v人电影| 欧 美 自 拍 偷 拍| 国产日韩欧美中文在线播放| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 九九热AV| 久久精品 六十路 熟女 欧美| 99久久精品欧美国产| 伊人久久综合影院| 无码乱人伦中文视频| 曰韩av中文字幕专区| 狠狠爱综合网| 高潮内射在线| 歐美性天天| 2020中文字幕在线| 青草一区二区| 欧美大香蕉久| 日操粉逼逼| 99热这里只有精品9| 操九九九九九九| 久久久久亚洲精品| 懂色av中文字幕| 国产91 丝袜在线播放00-百度| 国产粉嫩蜜臀av一区二区三区| 性久久久| 日本在线视频导航| 91欧美高清| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 69人妻精品丰满熟女区| 性老妇一区二区三区| 亚洲在钱| 国产深夜福利| 亚洲精品影视老司机| 五月天激情视频| 吉田爱美AV在线| WWW美腿丝袜香蕉中文| 欧美高清第一页| 欧美另类精品xxxx| 亚洲精品一区中文字幕乱码| 久久999久| 日韩大香蕉AV影片| 人人摸.人人色| 久久久久久人妻| 久久免费精品96| 中文字幕乱码在线观看| 国产高清吃奶免费视频网站| 簧片免费看视频| 久草资源在线视频官方总站日韩丝袜美腿 | 日韩不卡网操逼中文字幕日韩| 日韩内| 欧美一区二区三区另类精品| 久久人妻视频网| 亚洲欲| 亚洲成人精品在线一区| 日韩精品中文字幕二区| 亚洲自拍欧美国产首页网曝| 精品国产乱码久久久| 国产精品自拍xxxx| 日韩伦理视频| 好涩综合| 丁香六月东京热| 97在线欧洲| 东京热双插| 无套内射性感少妇视频| 日本淫穴在线| 很很操在线| 国产精品一二三区福利| 国产后入清纯| 色欲无码人妻日韩欧美精品| 久久9精品视频| 欧美色综合网| 日本午夜久久电影| 欧洲亚洲综合| 激情抓乳插进去啪啪啪日韩| 日韩99999色| 超碰97COm中文| 一区二区三区机械有限公司| 日本超碰色精品| 热无码中文亚洲H一道本一区二区| 黑丝少妇在线观看| 久久久青青草| 91色婷婷综合久久中文字幕二区| 男人天堂 天天射| 九月丁香婷婷色| 亚洲美女色图| 手机午夜电影神马久久| 成 人 影视 一区 二区 三区 四区| 综合网亚洲在线| 五月丁香综合激情| 久久久涩| 色啪网| 97资源亚洲| 婷婷五月色| 4虎在线观看| 国产精品交换一区二区| 天天综合网~91| 综合色图,成人综合网| 91天堂网| 欧美性猛交美女自慰91| 97在线看| 欧美日韩免费专区在线| 亚洲国产成人精品久久久国产成人一区二区| 亚洲,欧美,春色,另类 | 免费9 1久久| 日本欧美一区二区三区视频麻豆| 国产精品久久久蜜臀| 91丨九色丨国产丨人妻在线| 婷婷情色五月天| 日韩av不卡在线看| 碰人碰碰人人开房人肉| 97最新在线播放视频| 超碰久久.com| 六六久久日韩不卡| 欧美日韩国产成人高清| 北京美女一区二区| 欧美大香蕉专区网| 精品人妻久久久久一区二区三区| 97人妻碰碰中文无码久热丝袜| 91精品人妻一品二品三品| 玖玖97综合 | 97精品国产97久久久| yaouchengrenav| 91天美传媒在线观看| 亚洲欧美日韩精品久久久一区二区| 欧美色图小说综合| 亚洲va综合va国产va中文| 家庭乱伦麻豆| 操曰本熟女| 99热在线播放| 欧美激情视频在线一区| 制服丝袜第二页| 伊人亚洲国产一成人久久精品,久久| 国产亚洲色婷婷久久99精品91 - 百度| 1区2区3区中文字幕日韩| 日韩精品永久在线观看| 91另类| 蜜桃丰满熟妇av无码区不卡| 伊人99热| 在线播放免费av福利片| 91大香蕉伊人| 欧美狠狠弄| 久久综合激情| 日韩性爱视频在线免费观看| 精品无人区麻豆乱码1区2区图片| 韩国女主播青草福利视频| 国产精品久久久无码AV网站| 欧美性性性| 97精品综合久久网| 欧美亚性天堂| 99性爱在线观看| 免费精品无码一级毛片牛牛影视| 人人操人人射人人干| 日韩另类色图| 亚洲图片欧洲图片aⅴ| 啊啊啊在线观看| 久久久熟女一区| 2025亚洲男人天堂| 五月丁香六月婷综合成人综合 | 插入粉嫩少妇视频| 蜜桃中文字日产乱幕4区| 中国探花熟女| 国产强奸乱伦xd| 91啪啪| 亚洲色婷婷综合久久一区二区三区| 日本九九久久99播| 成功精品影院| 欧美一区二区观看在线| 欧美亚洲国产91在线| 男人的天堂com| 日日干夜夜骑| 久久国模av| 九一屌逼| 欧美后进式| 静品嫩模一区二区| 午夜爽爽爽在线观看永久入口姬片| 亚洲中文字幕在现观看| 国产熟女一区二区| 97超碰国产亚洲精品| 日韩人妻精品中文字幕| 国产欧美亚洲精品a第2页| 大香蕉久久| 亚洲一欧洲中文字幕在线| www久久国产精品| 天天做天天爱| 老熟乱一区二区三区四区| 久久久99999久网站| 97久久超碰国产网站| 91AV老熟女视频| 久久免费老司机精品| 99综合网| 操碰91| 亚洲欧美经典一区二区| 777奇米影视777四色| xxx0国产在线播放| 日逼视频日本| 国产对白刺激视频| 十八禁av无码免费网站APP| 欧美日韩性爱电影在线| 一级性爱视频免费在线| 日韩免费a级毛片无码a∨| 欧美人妻少妇| 亚洲欧美电影| 懂色aV一区二区天美传媒| 精品人妻一区二区三区日产| 97在线免费看视频| 男人的午夜天堂| 免费成人自拍视频在线| 国语av狠狠色丁香婷婷综合激情| 久久久久久久精| 日本一区二区中文字幕久久| 欧美欧美啪啪视频| 久久国产AⅤ| 天天躁日日躁AAAAXXXX国产 | 亚洲人精品午夜不卡| 亚洲中亚日激情视频| 97国产精选| 2020中文字幕在线观看| 女性91网站| 日本韩国国产精品一区| 午夜乱轮操逼视频免费看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii |