亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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)歷過這樣一個(gè)階段一開始用requests加個(gè)BeautifulSoup就能搞定后來發(fā)現(xiàn)頁面是 JS 動態(tài)渲染的于是換成 Selenium再后來發(fā)現(xiàn)單線程太慢于是上多線程多線程一跑瀏覽器實(shí)例互相打架內(nèi)存飆升于是開始琢磨瀏覽器池。這條路我走過不止一次。每次項(xiàng)目重啟瀏覽器池這塊的代碼幾乎都是復(fù)制粘貼過來的但每次都會踩到不一樣的坑。Chrome 版本升級了驅(qū)動對不上服務(wù)器內(nèi)存不夠跑了十幾個(gè)實(shí)例就 OOM頁面加載超時(shí)實(shí)例卡死不會自動回收并發(fā)一高各種Target closed、Session not created的報(bào)錯(cuò)鋪天蓋地。瀏覽器池本質(zhì)上是一個(gè)資源調(diào)度問題它要解決的核心矛盾是動態(tài)網(wǎng)頁渲染需要完整的瀏覽器環(huán)境而瀏覽器本身是重量級進(jìn)程啟動慢、吃內(nèi)存、容易崩。你需要在“并發(fā)能力”和“資源消耗”之間找一個(gè)平衡點(diǎn)還要處理實(shí)例的健康檢查、故障恢復(fù)、超時(shí)回收。這些東西寫起來不難但寫好很難維護(hù)好更難。Ace Data Cloud 這個(gè)項(xiàng)目標(biāo)題之所以吸引我是因?yàn)樗苯哟林辛诉@個(gè)痛點(diǎn)——?jiǎng)e再自己維護(hù)瀏覽器池了。這句話背后代表的是一種思路轉(zhuǎn)變把瀏覽器渲染這件事從“自建基礎(chǔ)設(shè)施”變成“調(diào)用一個(gè)服務(wù)”。就像你不會自己搭一個(gè) MySQL 集群來存幾行配置數(shù)據(jù)一樣動態(tài)網(wǎng)頁渲染也不應(yīng)該成為每個(gè)團(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 一個(gè)典型瀏覽器池的完整生命周期很多人對瀏覽器池的認(rèn)知停留在“啟動幾個(gè) Chrome 實(shí)例輪流用”這個(gè)層面。但真正在生產(chǎn)環(huán)境跑起來你需要處理的事情遠(yuǎn)不止這些。一個(gè)完整的瀏覽器池至少包含以下環(huán)節(jié)實(shí)例初始化啟動瀏覽器進(jìn)程配置啟動參數(shù)無頭模式、禁用圖片、禁用 GPU 等建立連接健康檢查定期檢測實(shí)例是否存活頁面是否能正常加載任務(wù)分配從隊(duì)列中取任務(wù)分配給空閑實(shí)例超時(shí)控制頁面加載超時(shí)、腳本執(zhí)行超時(shí)、整體任務(wù)超時(shí)三層超時(shí)缺一不可異?;謴?fù)實(shí)例崩潰后自動重啟任務(wù)重新入隊(duì)資源回收任務(wù)完成后清理頁面狀態(tài)cookie、localStorage、緩存避免污染下一個(gè)任務(wù)優(yōu)雅關(guān)閉服務(wù)停止時(shí)等待進(jìn)行中的任務(wù)完成釋放所有實(shí)例這還只是單機(jī)版本。如果要分布式部署還要加上服務(wù)注冊發(fā)現(xiàn)、負(fù)載均衡、跨節(jié)點(diǎn)任務(wù)調(diào)度。代碼量輕松上千行而且每一行都可能成為故障點(diǎn)。我見過一個(gè)團(tuán)隊(duì)瀏覽器池代碼寫了三千多行光是處理各種 Chrome 崩潰的邊界情況就占了三分之一。更麻煩的是Chrome 每次大版本升級總有一些行為變化導(dǎo)致原來的代碼需要調(diào)整。這個(gè)維護(hù)成本是持續(xù)性的不會因?yàn)槟銓懲炅司拖А?.2 資源消耗的賬要算清楚瀏覽器池最容易被低估的是資源消耗。一個(gè)無頭 Chrome 實(shí)例即使什么都不做內(nèi)存占用也在 100MB 到 300MB 之間。如果頁面復(fù)雜、加載了大量 JS單個(gè)實(shí)例吃到 500MB 甚至 1GB 都很正常。假設(shè)你要支撐 20 個(gè)并發(fā)渲染任務(wù)按每個(gè)實(shí)例 300MB 算光瀏覽器就要吃掉 6GB 內(nèi)存。這還沒算上操作系統(tǒng)緩存、你的應(yīng)用程序本身、以及各種中間件的開銷。一臺 8GB 的服務(wù)器實(shí)際能穩(wěn)定支撐的并發(fā)數(shù)可能只有 10 到 15 個(gè)。CPU 方面頁面渲染是計(jì)算密集型操作。JS 執(zhí)行、DOM 構(gòu)建、樣式計(jì)算、布局、繪制每一步都在消耗 CPU。如果頁面里有復(fù)雜的動畫或者大量數(shù)據(jù)可視化比如 ECharts 渲染幾萬個(gè)數(shù)據(jù)點(diǎn)單個(gè)頁面的渲染就能把一個(gè)核跑滿。這里有個(gè)常見的誤區(qū)很多人覺得無頭模式比有頭模式省資源。實(shí)際上無頭模式省的是顯示相關(guān)的開銷JS 引擎和渲染引擎的消耗是一樣的。對于計(jì)算密集型的頁面無頭模式的性能提升非常有限。2.3 那些文檔里不會寫的坑瀏覽器池的坑很多是只有在生產(chǎn)環(huán)境才能遇到的。我整理了幾個(gè)印象最深的內(nèi)存泄漏是慢性毒藥。Chrome 本身有內(nèi)存回收機(jī)制但長時(shí)間運(yùn)行的實(shí)例內(nèi)存占用會緩慢上升。你可能跑了一天都沒事第二天早上發(fā)現(xiàn)所有實(shí)例都變成了僵尸進(jìn)程。解決辦法是定期重啟實(shí)例比如每處理 100 個(gè)任務(wù)就重啟一次但這又增加了任務(wù)延遲。頁面之間的狀態(tài)污染。同一個(gè)實(shí)例處理完 A 頁面后cookie、localStorage、IndexedDB 里可能還殘留著數(shù)據(jù)。如果 B 頁面恰好依賴這些狀態(tài)就會出現(xiàn)莫名其妙的 bug。徹底的隔離需要每個(gè)任務(wù)用全新的 browser context但這又增加了開銷。并發(fā)數(shù)不是越高越好。我試過在一臺 16GB 的機(jī)器上跑 30 個(gè)并發(fā)實(shí)例結(jié)果就是系統(tǒng)頻繁 swap整體吞吐量反而下降。后來壓測發(fā)現(xiàn)這臺機(jī)器的最佳并發(fā)數(shù)在 12 到 15 之間。超過這個(gè)數(shù)任務(wù)排隊(duì)時(shí)間反而更長。Chrome 版本升級是定時(shí)炸彈。某次 Chrome 從 114 升級到 115我們有個(gè)頁面的截圖功能突然全黑。排查了半天才發(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)心“我要渲染哪個(gè)頁面拿到什么數(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ù)通常包含幾個(gè)核心組件渲染集群實(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)用方對你來說這些組件都是透明的。你看到的只是一個(gè) HTTP 接口傳入 URL 和提取規(guī)則拿到結(jié)構(gòu)化數(shù)據(jù)。3.2 為什么是 WebExtrator 而不是自己寫爬蟲項(xiàng)目標(biāo)題里提到了 WebExtrator 這個(gè)關(guān)鍵詞這應(yīng)該是 Ace Data Cloud 提供的一個(gè)具體功能模塊。它的定位是網(wǎng)頁內(nèi)容提取器輸入一個(gè) URL輸出頁面上的結(jié)構(gòu)化內(nèi)容。自己寫爬蟲和用 WebExtrator 的區(qū)別有點(diǎn)像自己做飯和點(diǎn)外賣的區(qū)別。自己做飯食材、調(diào)料、火候都要自己掌控做得好確實(shí)更合口味但時(shí)間成本高而且每次都要洗碗。點(diǎn)外賣你只需要說“我要吃什么”剩下的交給平臺雖然選擇受限于菜單但效率高得多。WebExtrator 的價(jià)值在于它把常見的提取需求標(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)容聚合、競品分析等場景中非常常見。如果每個(gè)項(xiàng)目都自己實(shí)現(xiàn)一遍就是重復(fù)造輪子。3.3 動態(tài)渲染的技術(shù)實(shí)現(xiàn)路徑Ace Data Cloud 處理動態(tài)網(wǎng)頁渲染底層大概率是基于無頭瀏覽器Headless Chrome 或類似方案。但和自建瀏覽器池不同的是它在幾個(gè)關(guān)鍵環(huán)節(jié)做了優(yōu)化。實(shí)例預(yù)熱。服務(wù)端會維護(hù)一個(gè)預(yù)熱好的瀏覽器實(shí)例池請求到來時(shí)直接分配不需要等待瀏覽器啟動。瀏覽器冷啟動通常需要 1 到 3 秒預(yù)熱可以把這部分時(shí)間省掉。智能等待。動態(tài)頁面的難點(diǎn)在于“什么時(shí)候算加載完成”。等load事件很多頁面在load之后還在異步加載數(shù)據(jù)。等固定時(shí)間要么浪費(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í)測過禁用圖片加載后頁面渲染時(shí)間平均能減少 30% 到 50%。并發(fā)控制。服務(wù)端會根據(jù)集群的負(fù)載情況動態(tài)調(diào)整并發(fā)數(shù)避免單個(gè)用戶的任務(wù)擠占其他用戶的資源。這比自己在單機(jī)上硬扛要可靠得多。4. 從零接入 Ace Data Cloud 的完整實(shí)操4.1 準(zhǔn)備工作賬號、密鑰與基礎(chǔ)環(huán)境接入任何云服務(wù)的第一步都是拿到訪問憑證。Ace Data Cloud 應(yīng)該會提供一個(gè) API Key你需要在請求頭里帶上它來證明身份。假設(shè)你已經(jīng)拿到了 API Key接下來需要準(zhǔn)備一個(gè)能發(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 第一個(gè)請求渲染一個(gè)動態(tài)頁面假設(shè)我們要渲染一個(gè)用 Vue 或 React 構(gòu)建的單頁應(yīng)用頁面的內(nèi)容是通過 JS 異步加載的。用傳統(tǒng)的requests只能拿到一個(gè)空的 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, # 超時(shí)時(shí)間單位秒 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])這個(gè)請求做了幾件事告訴服務(wù)端要渲染哪個(gè) URL等待策略是什么超時(shí)多久以及渲染完成后怎么提取內(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)該同時(shí)支持 CSS 選擇器和 XPath兩者各有適用場景。CSS 選擇器更簡潔適合大多數(shù)場景。比如article提取文章元素.content p提取 content 類下的所有直接子段落#main .title提取 main id 下的 title 類元素XPath更強(qiáng)大適合復(fù)雜條件。比如//div[classitem][position() 5]提取前 5 個(gè) item//a[contains(href, detail)]提取鏈接中包含 detail 的所有 a 標(biāo)簽//h2/following-sibling::p[1]提取每個(gè) h2 后面的第一個(gè) 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ù)。一個(gè)典型的響應(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ì)。這里有個(gè)細(xì)節(jié)值得注意渲染時(shí)間這個(gè)元數(shù)據(jù)很有用。如果某個(gè)頁面的渲染時(shí)間突然變長可能是頁面本身變復(fù)雜了也可能是服務(wù)端負(fù)載高了。監(jiān)控這個(gè)指標(biāo)能幫你提前發(fā)現(xiàn)問題。4.5 批量渲染與并發(fā)控制單個(gè)頁面渲染跑通之后下一步就是批量處理。假設(shè)你有一個(gè) URL 列表需要全部渲染并提取內(nèi)容。最樸素的做法是寫個(gè) for 循環(huán)一個(gè)一個(gè)請求。但這樣效率太低因?yàn)槊總€(gè)請求都要等待網(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ù)控制同時(shí)發(fā)起的請求數(shù)。設(shè)太高會給服務(wù)端壓力也可能觸發(fā)限流設(shè)太低則效率不夠。我一般從 5 開始試根據(jù)響應(yīng)時(shí)間和錯(cuò)誤率調(diào)整。注意并發(fā)控制不只是為了服務(wù)端也是為了你自己。如果同時(shí)發(fā)起幾百個(gè)請求你的網(wǎng)絡(luò)帶寬、內(nèi)存、文件描述符都可能成為瓶頸。而且一旦觸發(fā)限流所有請求都會失敗反而更慢。5. 渲染效果優(yōu)化與常見問題排查5.1 頁面渲染不完整的排查思路動態(tài)網(wǎng)頁渲染最常見的問題就是“內(nèi)容不全”。你明明在瀏覽器里能看到數(shù)據(jù)但通過服務(wù)渲染出來就是空的。這個(gè)問題通常有幾個(gè)原因等待策略不對。頁面數(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)該在這方面有更多積累。排查的時(shí)候我習(xí)慣先讓服務(wù)返回完整的 HTML 快照看看渲染后的 DOM 里到底有沒有目標(biāo)內(nèi)容。如果有說明是提取規(guī)則的問題如果沒有說明是渲染環(huán)節(jié)的問題。5.2 渲染速度優(yōu)化的幾個(gè)實(shí)用技巧渲染速度直接影響你的采集效率。除了前面提到的禁用圖片加載還有幾個(gè)技巧合理設(shè)置超時(shí)。超時(shí)設(shè)太短頁面還沒加載完就斷了設(shè)太長遇到慢頁面會一直等。我的經(jīng)驗(yàn)值是普通頁面 15 到 20 秒復(fù)雜頁面 30 到 45 秒。超過這個(gè)時(shí)間還沒渲染完大概率是頁面本身有問題繼續(xù)等也沒意義。復(fù)用連接。HTTP 的 keep-alive 能省去每次請求的 TCP 握手和 TLS 協(xié)商時(shí)間。用requests.Session或者aiohttp.ClientSession都能自動復(fù)用連接。批量提交。如果服務(wù)支持批量接口把多個(gè) URL 放在一個(gè)請求里提交能減少網(wǎng)絡(luò)往返次數(shù)。不過要注意單次批量不要太大否則一個(gè)失敗可能影響整批。緩存渲染結(jié)果。對于不經(jīng)常變化的頁面渲染一次后把結(jié)果緩存起來下次直接讀緩存??梢杂?URL 加時(shí)間戳做 key設(shè)置合理的過期時(shí)間。我實(shí)測過一個(gè)場景100 個(gè)頁面的渲染任務(wù)優(yōu)化前平均每個(gè)頁面 4.2 秒優(yōu)化后降到 2.1 秒。主要貢獻(xiàn)來自禁用圖片省了約 1 秒和連接復(fù)用省了約 0.5 秒剩下的來自等待策略的調(diào)整。5.3 常見錯(cuò)誤碼與處理方案調(diào)用 API 難免遇到錯(cuò)誤。下面是我整理的一些常見錯(cuò)誤和處理方法錯(cuò)誤碼含義可能原因處理方案401未授權(quán)API Key 錯(cuò)誤或過期檢查 Key 是否正確是否已過期429請求過多觸發(fā)限流降低并發(fā)數(shù)增加請求間隔500服務(wù)端錯(cuò)誤服務(wù)內(nèi)部異常重試如果持續(xù)出現(xiàn)聯(lián)系支持504網(wǎng)關(guān)超時(shí)頁面渲染超時(shí)增加 timeout 參數(shù)或檢查頁面是否可訪問1001頁面加載失敗URL 無法訪問檢查 URL 是否正確目標(biāo)站點(diǎn)是否可達(dá)1002提取規(guī)則無效選擇器語法錯(cuò)誤檢查 CSS 選擇器或 XPath 語法1003內(nèi)容為空頁面沒有匹配的內(nèi)容檢查選擇器是否匹配頁面是否需要登錄對于 429 和 500 這類臨時(shí)性錯(cuò)誤重試是有效的。但重試要有策略不要立即重試而是等一段時(shí)間比如 1 秒、2 秒、4 秒指數(shù)退避重試次數(shù)不要太多一般 3 次就夠了如果連續(xù)失敗說明不是偶發(fā)問題應(yīng)該停下來排查。5.4 內(nèi)容提取的精度調(diào)優(yōu)提取精度決定了你拿到的數(shù)據(jù)質(zhì)量。幾個(gè)調(diào)優(yōu)方向選擇器要足夠具體。div這種選擇器會匹配一大堆元素div.article-content p就精確得多。但也不要過于依賴復(fù)雜的層級關(guān)系頁面結(jié)構(gòu)一變就失效。比較好的做法是用語義化的類名或?qū)傩宰鳛殄^點(diǎn)。處理空白和換行。HTML 里的空白字符在渲染后可能變成多個(gè)空格或換行。提取后需要做規(guī)范化處理比如把連續(xù)空白替換成單個(gè)空格去掉首尾空白。處理相對鏈接。頁面里的鏈接可能是相對路徑提取后需要轉(zhuǎn)換成絕對路徑。這需要結(jié)合頁面的 base URL 來處理。處理編碼問題。有些頁面的編碼聲明不正確導(dǎo)致提取出來的中文是亂碼。需要在請求時(shí)指定編碼或者在提取后做編碼轉(zhuǎn)換。去重。如果頁面有重復(fù)的內(nèi)容塊比如推薦閱讀里出現(xiàn)了正文中的文章提取后需要去重。可以根據(jù)內(nèi)容的哈希值或者關(guān)鍵字段來判斷。6. 從自建到托管遷移策略與成本對比6.1 什么情況下應(yīng)該考慮遷移不是所有場景都適合用托管服務(wù)。我總結(jié)了一個(gè)簡單的判斷標(biāo)準(zhǔn)適合遷移的場景團(tuán)隊(duì)沒有專門的運(yùn)維人員瀏覽器池的維護(hù)占用了大量開發(fā)時(shí)間采集量波動大自建池要么不夠用要么浪費(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)。錯(cuò)誤處理適配。原來的異常類型比如TimeoutException、WebDriverException要映射到新的錯(cuò)誤碼。重試邏輯也要相應(yīng)調(diào)整。結(jié)果格式適配。原來可能直接返回 Selenium 的 WebElement 對象現(xiàn)在返回的是 JSON。需要把下游代碼里對 WebElement 的依賴改掉。遷移過程中建議保留原來的自建方案作為 fallback。當(dāng)托管服務(wù)出現(xiàn)問題時(shí)可以臨時(shí)切回自建池保證業(yè)務(wù)不中斷。6.3 成本結(jié)構(gòu)的真實(shí)對比成本這塊要算總賬不能只看 API 調(diào)用費(fèi)用。自建瀏覽器池的成本包括服務(wù)器成本至少一臺 8GB 內(nèi)存的機(jī)器云服務(wù)商價(jià)格大概每月 300 到 500 元開發(fā)成本初始開發(fā) 2 到 4 周后續(xù)維護(hù)每周至少 2 到 4 小時(shí)故障成本實(shí)例崩潰導(dǎo)致的任務(wù)失敗、數(shù)據(jù)丟失、業(yè)務(wù)中斷機(jī)會成本開發(fā)人員花在維護(hù)瀏覽器池上的時(shí)間本可以用來做更有價(jià)值的事托管服務(wù)的成本主要是 API 調(diào)用費(fèi)用通常按渲染次數(shù)或計(jì)算資源計(jì)費(fèi)。對于中小規(guī)模的采集需求托管服務(wù)的費(fèi)用可能比自建服務(wù)器還低而且省去了開發(fā)和維護(hù)成本。我算過一個(gè)賬一個(gè)中等規(guī)模的采集項(xiàng)目每月渲染約 10 萬次頁面。自建方案需要 2 臺 8GB 服務(wù)器約 800 元/月加上每周 3 小時(shí)的維護(hù)時(shí)間按人力成本折算約 1500 元/月總成本約 2300 元/月。托管服務(wù)按每次 0.01 元算10 萬次是 1000 元/月。差距很明顯。當(dāng)然量級越大自建的邊際成本優(yōu)勢越明顯。當(dāng)月渲染量超過 100 萬次時(shí)自建可能更劃算。但這個(gè)量級的項(xiàng)目通常也有專門的團(tuán)隊(duì)來維護(hù)了。7. 動態(tài)渲染之外Ace Data Cloud 還能做什么7.1 頁面截圖與 PDF 生成除了提取文本內(nèi)容Ace Data Cloud 這類服務(wù)通常還支持頁面截圖和 PDF 生成。這兩個(gè)功能在很多場景下很有用頁面存檔定期對重要頁面截圖作為內(nèi)容變更的證據(jù)報(bào)告生成把數(shù)據(jù)可視化頁面渲染成 PDF用于生成日報(bào)周報(bào)視覺回歸測試對比頁面改版前后的截圖發(fā)現(xiàn)意外的樣式變化截圖功能的關(guān)鍵參數(shù)是視口大小和截圖區(qū)域。視口大小決定了頁面的布局移動端和桌面端布局不同截圖區(qū)域決定了是截整個(gè)頁面還是只截可視區(qū)域。PDF 生成則需要注意分頁問題。長頁面轉(zhuǎn) PDF 時(shí)如果分頁位置不對可能會把表格或代碼塊截?cái)?。好的服?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à)格監(jiān)控、內(nèi)容聚合、SEO 分析等場景這比解析 HTML 要可靠得多。7.3 與現(xiàn)有工作流的集成Ace Data Cloud 作為一個(gè) API 服務(wù)可以很方便地集成到各種工作流中定時(shí)任務(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)采集我個(gè)人的習(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)致每次都等到超時(shí)。后來我改成優(yōu)先用selector等待具體元素。比如我知道頁面渲染完成后會出現(xiàn).data-table這個(gè)元素就等它出現(xiàn)。這樣既準(zhǔn)確又快。只有不知道具體元素時(shí)才退回到networkidle。還有一個(gè)細(xì)節(jié)networkidle通常有個(gè)時(shí)間窗口比如 500ms 內(nèi)沒有新請求就算空閑。這個(gè)窗口設(shè)太小容易誤判設(shè)太大又浪費(fèi)時(shí)間。我一般用默認(rèn)值遇到問題再調(diào)整。8.2 關(guān)于并發(fā)數(shù)的動態(tài)調(diào)整固定并發(fā)數(shù)在不同時(shí)間段的效果可能完全不同。白天目標(biāo)網(wǎng)站響應(yīng)快并發(fā)可以高一些晚上響應(yīng)慢并發(fā)高了反而容易超時(shí)。我后來實(shí)現(xiàn)了一個(gè)簡單的自適應(yīng)邏輯記錄最近 100 個(gè)請求的平均響應(yīng)時(shí)間和錯(cuò)誤率如果響應(yīng)時(shí)間變長或錯(cuò)誤率上升就降低并發(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)容明顯不對。后來我加了一個(gè)簡單的校驗(yàn)邏輯檢查提取結(jié)果的長度是否在合理范圍內(nèi)檢查關(guān)鍵字段是否存在檢查內(nèi)容是否包含預(yù)期的關(guān)鍵詞。如果校驗(yàn)不通過就標(biāo)記為可疑結(jié)果人工復(fù)查或者重新渲染。這個(gè)校驗(yàn)邏輯幫我發(fā)現(xiàn)了好幾個(gè)隱蔽的問題比如某個(gè)頁面的選擇器在改版后失效了但因?yàn)闆]有報(bào)錯(cuò)一直沒被發(fā)現(xiàn)。8.4 關(guān)于成本控制托管服務(wù)雖然方便但如果不加控制費(fèi)用可能會超出預(yù)期。幾個(gè)控制成本的技巧緩存對不常變化的頁面渲染一次后緩存結(jié)果設(shè)置合理的過期時(shí)間按需渲染先用普通 HTTP 請求試試如果能拿到內(nèi)容就不調(diào)用渲染服務(wù)限制重試重試次數(shù)不要太多避免因?yàn)橐粋€(gè)壞頁面反復(fù)消耗資源監(jiān)控用量設(shè)置用量告警當(dāng)月度用量接近預(yù)算時(shí)及時(shí)調(diào)整我見過一個(gè)團(tuán)隊(duì)因?yàn)闆]有做緩存同一個(gè)頁面每天渲染幾百次費(fèi)用是實(shí)際需要的十幾倍。加上緩存后費(fèi)用直接降了 80%。8.5 關(guān)于服務(wù)選型Ace Data Cloud 不是唯一的托管渲染服務(wù)選型時(shí)要考慮幾個(gè)因素覆蓋范圍支持哪些等待策略、提取方式、輸出格式穩(wěn)定性SLA 是多少歷史可用性如何價(jià)格計(jì)費(fèi)方式是否透明有沒有隱藏費(fèi)用支持文檔是否完善遇到問題能否及時(shí)得到支持合規(guī)數(shù)據(jù)如何處理是否符合你的合規(guī)要求我的建議是先用免費(fèi)額度或者試用版跑一遍核心場景確認(rèn)能滿足需求再正式接入。不要只看文檔就做決定實(shí)際跑起來才能發(fā)現(xiàn)真正的問題。動態(tài)網(wǎng)頁渲染這件事從自建瀏覽器池到用托管服務(wù)本質(zhì)上是從“造輪子”到“用輪子”的轉(zhuǎn)變。這個(gè)轉(zhuǎn)變在軟件行業(yè)一直在發(fā)生每一次都讓開發(fā)者能更專注于業(yè)務(wù)本身。Ace Data Cloud 這類服務(wù)的價(jià)值不在于它用了多先進(jìn)的技術(shù)而在于它把復(fù)雜的事情變簡單了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
2024人人操人人摸| 国厂麻豆77q4| 国产浮力影院第1页| 欧美自拍网| 97视频在线观看高清资源| 另类一区| 在线人人人人人人精品超| 高清无码人妻久久久一区二区三区aⅴ| 99re这里只有精品3| 日本色色色视频| 97久久精品| 后入福利视频| 日日夜夜国产综合| 用力操死我| 色情五月丁香| 高清在线偷拍自拍视频| 日本操嫩b网| 欧洲在线性爱视频| 600国产精品视频| 嗯嗯啊啊啊啊轻点视频| 熟女一区二区三区| 超碰98综合网| 亚洲视频一二区| 亚洲,欧美,春色,另类| 久久这里只精品99re66图| 人妻啪| 亚洲色天| 精品女人999| 久草在线| 五月丁香色情| 久久久久久国产无码精品| 人妻久久一区二区三区 | 婷婷色在线| 国产日韩欧美亚洲精品95| 99999精品| 国产精品精品系列在线观看| 啊啊啊啊操死我| 久久精品熟妇丰满人妻99| 国产精品另类| 人人模人人看| 天天谢天天干| 亚洲一曲日韩精品| av日韩在线观看电影| 黄色免费网页无码| 凹凸视频特色日本特黄| 69超碰综合| 五月天婷婷欧美三区| 亚洲综合九九| 亚洲免费精品一区| 男人精品天堂一区| 久久丝袜| 亚洲无无码αⅴ每日更新| 色哟哟 日韩精品| 亚洲一卡二卡在线免费| 大香网站| 久草婷婷| 久日91在线| 欧美色综合图片| 口爆综合网| 超碰av人人人| 日韩激情视频| 欧美另类天堂| 无码一区二区精品视频久久久春药| 欧美999| 草草电影院| 激情网色| 日本人体九九九九九九| 青青草五月天| 草草草视频| 热思思免费视频| 99久久精品国产高潮| 欧美日不卡| 久干网| a啊啊啊啊啊啊啊啊一区二区| 国产精品久久久| 影音先锋新男人| 色伊人91| 91色图片| 黄页av| 97精品熟女少妇一区| 性爱1区| 九九人妻| 少妇一级无码精品| 久无码| 国产熟女高潮一区二区三区| 网页导航五月天免费一二三区| 中文字幕日韩综合| 青青草在线视频播放器| 欧美另类精品xxxx| 91黑丝少妇| 日韩特一级久久| 亚洲乱色熟女一区| 日韩欧美中文字| 东北操逼| 乳欲人妻办公室奶水| 五月综合久久| 91老妇女| 国产精品一二三在线看| 男人的天堂2000| 午夜性刺激视频免费观看| 国产成人www免费人成看片| 欧美成人亚洲精品| 亚洲综合第一页| 人妻精品视频一区二区| 成人久久精品| 免费国产电影一区二区| 97爱欧美| 强奸抽插av| 99亚洲精品| 精品美女人人干| 家庭乱伦性爱av| 久久超碰98| 色香阁在线| 亚洲一区二区av| 久久久久九九九| 久久久性爱视频| 97精品视频| 色优久久| 日韩免费高清大片在线| 久久久∴| 99亚洲精品| 欧美性色网| 激情婷婷五月天| 日本布卡一区二三区| 综合自拍| 日本人妻最新在线中| 久久一区无码| 亚洲97成人在线观看| 啊好爽受不了无码| 国产成人精品无码久久| 国产中文字幕在线| 色五月丁香五月| 国产999精品久久久| 色婷婷丁香| 超碰97人妻自拍| 99热免费| 天天操人人操狠狠插| 天天看特黄的免费网站 | 激情五月天丁香| 亚洲骚男同com| av九九| 日韩欧无码一区二区三区免费不卡 | 思思99热| 人人干黄色| 日韩欧美中文字| 精品国产精品一区二区| 亚洲激情片| 一区二区三区日韩欧美| 天天精品| 又大又大又大又粗爽高潮观看| 九九九久千久久激情蜜桃在线看 | 欧美综合色综合| 久久99精品视频| 日日超碰亚洲| 深夜国产福利| 18禁久极品美女久久哦哟呀!| 亚洲一区二区性爱电影| 啊啊啊好多水| 熟妇高潮二区三区| 绯色AV粉色AV蜜臀AV| 国产高清MV操逼视频| 国产精品对白自产拍| 一起草av| 欧美成人午夜免费福利785| 中欧人妻丝袜中文字幕| 我中文字幕6区| 99久热| 亚洲日韩视频二区| 性欧美91| 日韩中文字幕宗合在线| 亚洲熟妇无码一区二区三区| 欧美疯狂做爰xxxx| 国产aⅴ无码片毛片一级网站| 97国产|免费| 欧美久久人妻少妇一区二区| 四虎AV无码| 国产亚洲禁久一区二区| 日韩无码精品综合久久| 亚洲AV麻豆Aⅴ无码电影一| 中韩中文字幕在线观看| 日本性一区| 800zy一区二区| 99操视频| 99久久久久久久久| 园内精品自拍视频在线播放| 欧美亚洲素人制服精品| 精品然女一区二区| 丝袜喷水在线| 欧亚乱色熟一区二区三四区| 吻戏激情性巴克| 丝袜熟女一区二区三区| 国产精品亚洲一级av第二区| 亚洲色狠| 亚洲国产精品无石码久久| 九一性生活免费视频| 好爽,再快点啊哈嗯嗯嗯嗯| 五月婷在线| 中文字幕亚洲热播人妻| 久久av一级av少妇av高潮| 欧美色图综合| 超碰78| 国产尤物在线三区| 91亚.色| 中文字幕视频免费| 亚州伊人色综台| 久久免费中文字幕在线观看| 人人摸.人人色| 人人操人人精品影片| 亚洲人妖网| 嫩草伊人久久精品| 亚洲色图欧美另类在线| 操老熟女AV| 91视频综合在线| 中文字幕视频免费| 9九九国产| 偷偷人人精品女女久久| 在线天堂资源亚洲| 色情成人五月天| 色五月首页| 久久97| 久9视频| 欧美在线干| 国产精品成人在线| 欧洲Au麻豆| 久久九七| 婷婷色香伊人| 91色人妻| 日人妻视频91| 五月婷婷丁香| 国产农村妇女精品一| 精品乱码久久久久| 99999亚洲| 91综合色噜噜| 亚洲 一区二区 自拍| 色色色色网站| 欧美亚洲激情小说| 久久高潮妇女视频| 青娱乐福利99| a在线观看| 天美AV片| 偷拍五区| 国产精品美女视频诱惑| 日本午夜久久电影| 日韩av熟女一区二区三区成人| a人欧美综合天堂麻豆| 久久九精品| 91爱剪切久久| 婷婷综合久久| 男女性扦B| 激情小说五月天| 91国产大片| 亚洲第一男人天堂| 在线观看无码三级少妇| 2025亚洲男人天堂| 午夜噜噜噜| 国产成人 综合亚洲 天堂| 久久欧美性爱视频| 伦在线97| 99无码狠狠久久| 日韩精品永久在线观看| 人人澡综合涩| 日韩人妻中文视频| 欧美强奸乱| 无码99| 99日视频在线免费| 天天视频黄网站| 青青青操| 天天日天天操天天射河南省| 高清无码国产亚洲| 狠狠躁天天躁日日躁97| 性爱乱伦视频免费| 大香蕉伊人亚洲| 亚洲深夜福利| 97最新在线播放视频| 干B| 国产精品高清2021在线| 色欧美天天| 亚洲干B| JIZZJIZZ国产精品喷水| 热久日综合| 绯色一区二区三区不卡少妇 | 色色色色网站| 热热色色综合| 精品999日本| 国产精品久久久啊| 国产盗摄美女如厕大神作品在线观看 | 人妻少妇久久中文字幕一区二区 麻豆| 婷婷久热| 国产高清自拍视频| 日韩乱码av| 欧美啪啪色吧在线| 97电影院超碰| 一区二区影视| 97青娱乐超碰久久| 岛国毛片在线观看免费| 97超碰亚洲| 高清无码一区二区三区| 久久婷婷欧美| 影音先锋乱| 一二视频神马久久传媒| 色色激情五月天| 91日韩网站| 大香蕉手机视频| 日韩精品 欧美激情| 婷婷五月天基地| 91美女在线| 欧美熟爽综合| 波多野结衣先锋影音| Aa东京男人的天堂| 丁香婷婷啪啪| 中国AAAAAA黄色片| 九九九久久久久| 国产女人和拘做爰视频 | 91无遮挡| 欧美性视频二区三区| 第一高清av中文字幕| 成人精品久久| 性色高清在线| 色成人Www精品永久观看| 人伦四五区| 久久熟女人| 久久丁香久草综合网| 淫乱图区 | 精品视频专区| 婷婷五月天色色| 无码不卡亚洲成?人片| 丁香婷婷激情五月天无毒不卡 | 日韩国产品视频中文字| 国产精品激情久久久久久久| 干超碰碰熟女| 成人天天爽| 亚洲人成网www| 国产精品久久天天干| 91亚洲丝袜| 大香蕉123| 一级日本牲交大片好爽在线看| 一二三四区操操Av| 久久女同性恋一二区| 蜜乳av首页| 一级人妻性爱视频| 啊啊啊啊啊在线| 天天操天天日天天干| 欧亚综合一卡二卡中文字幕| 干日本人少妇午夜寂寞影院| 超碰成人人人爽人人爽| 国产精品久久久午夜夜伦鲁鲁| 日日日啊啊啊| 精品区9| 韩国成人精品久久久免费看| 国产在线播放成人免费| 美女十八禁| 国产一区二区三区久久精品太古里| 曰韩精品九九无码| 五月激情在线| 婷婷五月天激情小说| 日本一区视频在线观看| 久久久999| 亚洲高清综合网| 亚洲久草AV色图| 殴洲老熟女| 蜜桃精品一区二区三区ww| 婷婷丁香成人| 99热免费| 可以看的av| 日韩午夜精品一区二区三区电影| 自怕偷自怕亚洲精品| 人人操欧美风骚| 天天干18禁| 亚洲激情久久久伊人综合| 91色堂| 欧美青青视频| 欧美91精彩| 欧美美女在线高潮999| 91精品国产综合久久久蜜臀| 美女尤物福利视频| 蜜桃臀 后入 一区 二区 三区 在线| 大香蕉啪啪啪| 人人操AV| 91爱综合| 色狠狠综合噜一二三区| 蜜臀精品1区2区| 日本人妻一区二区| 中文乱码99| 欧美久久婷婷| 亚洲国产青青| 欧美日日人人天天| 欧美劲爆第一页| 97视频在线免费观看| 久久久久少妇| 大香蕉乱级| 天天夜躁日日躁狠狠2002| 亚洲国产精品无码AV久久久| av在线一区二区三区| 亚洲高清国产理伦片| 欧美麻豆成人同性GⅤ在线| 特级丰满少妇一级AAAA爱毛片| 丰满人妻一区二区三区大胸懂色| 男女一级A片大黄,一进一出| 婷婷色色五月天| 五月天婷婷欧美三区| 午夜呻吟欧美| 青青草国产一区二区三区| 久久久久九九九九九| 91精品导航| 粉嫩av平台| 2018天天干在线视频| 精品v日韩欧美国产| 婷婷五月天影院| 国产精品久久发布| 色九九综合AV| 男人的天堂va在线| 国产亚洲女v在线观看| 欧美在线干| 亚洲综合另类欧美久久久| 天天内射| 亚洲国产97| 收看日本人日bb| 人人考人人摸人人干| 麻豆天美国美国产AV| 精品十三区| 久久精品国产97欧美精品亚洲 | 日韩人妻精品久久久久| 噜噜噜久久亚洲精品色情| 怡红院亚洲怡春院av| 777超碰| 激情五月天插| 欧美熟爽综合| 天天日天天干天天摸天天操| 一级黄色视频网| 夜色五月天| 久久久久久久六六| 国产成人亚洲精品无| 唐山老熟妇露脸啪啪叫| AND人妻系列| 色综九九九一区| 国产成久久综合片| 精品久久久久久亚洲| 岛国不卡超碰护士AV在线播放| 超碰欧美97| 艹少妇网站| 麻豆性爱视频在线播放| 神马午夜久久| 91美女丝袜诱惑视频| 伊人色综合欧美| 日韩成人精品| 欧美 综合| 婷婷五月天激情四射| 国产精品一级片在线看| 久久精品国产99国产精品亚洲| 欧美东京热青青草| 97最新在线播放视频| 亚洲 综合 第一页| 国产特级毛片AAAAAA高潮流水 | 欧美综合1性辶| 人人操,操人人| 国产精品视频| 操B视频日韩无码| 蜜臀av在线播放一区二区三区| 黄站在线免费观看| 国产精品老师| 欧美亚洲手机在线| 五月天婷婷久久| 天天天操天天天爱| 亚洲第一无码播放立川理惠| 日韩国产九九精品一区二区三区毛片| 日韩欧美一级特黄大片| 日本免费一区二区不卡| 被体育老师抱着c到高潮| 天天日美女的B| 日本丝袜人妻内射| 色眯眯av| 丁香色五月 97干| 国产精品日日摸天天碰| 女优视频第10页| 国产精品第一页国产大屁股视频免费区| 91热爆在线| 天躁夜夜躁2021| 六月激情网| 亚洲人天堂| 色月天AV导航| 国产亚洲日韩在线三区黑人| 丝袜狠狠草尤物 91| 午夜寂寞欧美| 老司机香蕉| 台湾佬激情综合| 强被迫伦姧在线观看无码网站| 熟妇一区二区三区| 亚洲AV无码黄色强奸| 新91视频.cmp| 亚洲色堂免费视频| 国产女同视频在线播放| 亚洲少妇自拍中文字幕懂色| 丁香六月激情| 国产亚洲欧美每日在线| 国产热av| 91女网站| 大香网站| 久久久性| 另类图片五月天| 2020中文字幕| 日韩欧美成人午夜福利| 国产2.3.4区| 啊啊啊啊啊啊啊国| 99久久e免费热视| 日本欧美不卡| 嗯嗯啊啊视频一区二区三区| 精品色色| 久久直播国产| 又大又大又大又粗爽高潮观看 | 国产精品成人无码a v毛片| 亚洲欧美综合网站| 人妻精品4K4K4K4K4| 在线观看AV片| 乱操乱伦AV| 亚洲第一页色网| 天堂精品小草| 亚洲男人天堂2019| 久久99午夜精品一区人妻| 久久超碰网| 天天日熟妇| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 国产中文字幕在线点播| 99热销国产这里有精品| 少妇99| 亚射在线| 狼天天狼天天大香蕉| 福利伊人玖玖国产| 一二三四视频中文字幕在线看| 97在线视频观看免费| 老师充足的奶水小说| 大香蕉乱伦视频网| 亚洲天堂7777| 国产一进一出视频网站| 天天看天天日天天操| 国产91 丝袜在线播放 | 欧美一区二区三区日韩| 国产免a费看黄片在线| 成·人免费午夜在线观看| 69久久| 91精品少妇搡搡搡| 日韩一级二级三级免费看完整版国语版| 欧美日韩情色一区二区| 九九热精品| www欧美性爱| 淫荡熟女乱伦网| 国产视频一区二区三区在线免费观看| A级片一区| 七月婷婷综合| 亚洲无码精品AV久久久| 亚洲视频中文一区| 日本福利社| 久久久国产精品亚洲精品| 白嫩嫩一区| 婷婷五月天成人| 国产在线精品偷| 中文自拍欧美影视| 大香蕉一线视频| 嗯啊抽插大香蕉网页| 亚洲AV秘无码一区..| 欧美国产精品久久九九| 久久性爱视频免费看| 日本一区二区中文字幕久久| 欧美99999| 欧美一区二区男人天堂| 国产日韩手机视频在线| 久久美女国产| 久久免费精品视频免一| 国产日韩欧美三级片| 日韩中文字幕二区| 亚洲国产第一页综合视频| 激情综合五月| 青青草吊丝| 91nbbbbbb| 亚洲自拍青操视频| 久久久久久999| 91综合熟女| 国产午夜福利专区综合| 国产精品一级毛片不卡视| 欧美性爱在线无码| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 无码黑人精品一区二区三区三| 日韩图区 偷拍| 国产精点久久久成人| 激情久久久| 99.色网| 熟妇高潮精品一区二区三区下载| 骚鸭AV| 91老熟妇| 精品久久久高清无码| 天天天天天天天天天天干美女| 日本123区操B视频| 欧美大码在线视频| 免费看污网址| 久久久久幕乱码| 欧美资源| 国产树林里野战在线看| 亚州操操穴网| 国产中文字幕在线| 五月天婷婷在线看| 亚欧性爱在线无码| 青久操| 91丝袜视频在线观看| 国产美女自拍AV| 伊人五月天| 亚av顶级裸体一区二区三区四区五区 | 99九九久久| 欧美日韩小说| 99色热国产视频精品| 精品区9| 蜜桃臀一区二区aV| 国内毛片热久久思思热| 天天爽天天干| 欧美日韩美女精品久草一区二区三区 | 久久久久成人亚洲国产| 蜜臀久久99精品久久久久免费观| 久热网| 探花熟女,姿勢到位,體驗感也到位| 夜夜中出国产| 欲色综合| 欧美性爱在线无码| 激情综合网一盗摄| 在线无码视频| 日韩熟女精品无码专区一区二区| 91性网| 日本午夜久久电影| 97精品97久久| 亚洲国产精品有声| 草久久久| 日韩av电影成人在线| 久久午夜伦| 99re28在线观看| 免费看欧美美女黄色大片| 色综合99999| 久久中文字幕一区不卡| 大香蕉国产中文自拍| 亚洲成a人v欧美综合天堂下载 | 91性片| 色色色综合| 极品色综合| 色婷婷av在线观看| 国产精品不卡少妇白| 国产成人久久久精品免费AV| 超碰97在线中文| 日日橹狠狠爱欧美超碰| 精品无码欧美三级| 福利风月五月天影院| 屁股久久久久久| 人妻少妇精品一区二区三区| 亚洲高清色综合| 久久思思热| 91热| 日韩欧美视频青青| 91爱| 国产性感在线观看| 日熟女| 人妻人妻天天碰| 永久免费发布性爱网| 久久中文字幕女同性恋一区| 性爱乱伦一区| 久久无码精品| 麻豆久久久久久久久丝袜| 日本一区二区亚洲综合| 91九九九逼| 欧美日韩精品一区二区三区高清| 97超碰欧美手机在线| www99热| 欧美亚洲天堂| 综合天天网| 国产中文字幕曰本毛片| 在线天堂资源亚洲| 91丝袜美女| 欧美天天干| 天天性射网| 91是天天| 一牛影视成人片免费| 欧美精品不卡一二三四在线91| 亚洲婷婷五月天| WWW.操逼.COM| 综合九九| 97久久久久久久精| 成人乱人伦一区二区| 国产高清在线自在拍69| 国产欧美日韩女同性恋ww喷水精品| av爱爱爱| 欧美韩日精品99综合| 好淫网一二三视区| 久久久无码av精| 超碰九7免费| 青青青艹在线视频| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 嗯嗯啊啊的视频| 欧美1727免费观看视频| 久久美女国产| 91无码西班牙视频在线| 久久久成人免费av电影| 蜜桃久久久久久久| 曰韩无码777| 日韩激情毛片一级久久久| 日韩射图| 牛牛久久国产精品视频一二三| 67194国产| www.91逼逼.com| 呦呦一区| 国产欧美另类久久久精品课程| 欧美韩国你懂得在线 | 欧美九一精品久久久熟妇| 美女啊啊啊啊pc| 手机看片1025| 人人妻人射| 久久精品99| 自拍啪啪视频| 10000部十八禁看电影| 九九激情网| 日韩激情中文字幕有码| 香蕉国产精品麻豆亚洲欧美日韩| 超碰九九| 久热大香蕉网站| 神马久久网| 操死我干死我| 9/A片| 国产原创自拍| 五月丁香啪啪网| 精品中文字幕一区二区l - 百度| 1769国内精品视频| 欧洲在线性爱视频| 国产乱子伦一区二区三区在线观看| 国产精品色约约| 色色色色色色色色综合| 中文97国产| 天天看人人操屄犊摸阴| 暖暖精品二区三区观看| 日韩素人无码一区二区三区三州| 国产毛片精品一区二区色欲黄A片| 亚欧Av| 成人免费不卡在线视频| 久久性爱网站| 国产精品色片一区二区| 五十路三级片| 屁屁影院一区二区三区国产 | 狠狠狠狠狠干| 天天综合网站| 蜜臀av在线播放一区二区三区| 色色色网站| 天天天天干| 婷婷在线视频| 嗯嗯嗯嗯啊啊啊好紧好大| 日韩无码嘿咻黑热久| 超碰公开久久网| 午夜激情床戏激情| 欧美熟妇精品黑人巨大一二三区| 天天摸天天碰天天添青青| 蜜桃视频一区二区三区在线观看| 麻豆性爱视频在线播放| 亚洲一区亚洲天堂| 精品二区三四区五电影| 97人人夜| 大JI巴好深好爽又大又粗视频| 20cm女自慰在线日韩欧美| 欧美特大AA级黄片| 综合在线导航一区| 操美女高潮抽搐白浆| 婷婷综合视频| 精产国品一区二三产品| 精品九九九九九九九九九| 日韩成人人妻网站| 校园春色五月天| 性饥渴少妇av无码毛片| 最新日产中文在线麻豆| 五月婷在线| 亚欧中文字幕在线视频| 久久是精品| 男人的天堂久久久| 丁香六月激情| 久久五月丁香| 美腿丝袜高跟网免费视频免费视频| 天天摸天天舔天天操| 日韩精品亚洲一二三| 欧美性爱第1 页| 99久久精品无码一区二区| 五月天伊人| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 97视频www| 久久高潮妇女视频| 五月丁香六月综合缴清无码| 99久久久无码国产精品性男| 艳美熟妇先锋一二三区| 国产一| 试看日韩黄片| 一区在线国产播放| 欧美 青青草| 日韩欧美三级| 亚州免费啪啪视频| 97色在线观看| 极品出轨视频网站| 亚洲欧洲综合av在线| 日本三级中国三级99人妇网站| 成人一区二区三区四区| 日韩人妻 中文字幕| 日本熟妇一区二区三区| 婷婷九月国产| 精品无码一区二区三区| 综合色播| 精品美女人人干| 一级AV性爱| 亚州情色j区| 99国产精品自在自在| A级国产欧美激情在线| 五月丁香综合激情| 人妻激情在线视频| 级做a爱无码性色永久免费| 麻豆人妻精品一区二区| 婷婷久久久精品| 亚洲一级性爱视频免费看| 69精品在线| 欧美日韩狠狠爱| 综合久久欧美| 最新9久久久9免费视频| 国产一区二区三三视频| 亚洲情色1区| 另类天堂| 久久精品人体| 天美传媒婬乱在| 99久久婷婷| 色亚洲欧美| 精品一区二区亚洲国产| 任我爽在线视频免费观看| 樱花蜜乳av| 日本99一区二区| 亚洲另类欧美精品| 欧美熟妇精品黑人巨大一二三区| 国产熟女精品一区二区| 蜜桃视频精品一区二区| 人妻欧美| 亚洲性综合9| 午夜操一操| 日韩伦理久 久久 清纯| 高清有码一区二区| 成人精品视频一区二区| 欧美日韩大香蕉| 久久超碰、| 日韩av不卡在线看| 色www精品视频在线观看| 东北丰满熟女国产一区| 青青伊人加勒比海| 欧美一区二区观看在线| 日韩精品人妻中文字幕不卡乱码| 亚洲一本大道中文字幕无码在线| 亚洲双插| h在线看免费版在线看| 91亚洲欧美激情| 亚洲图片欧美91N| 人妻天天爽天天爽三区| 欧美视频第二页| 国产欧美岛国精品一区 | 性暴力欧美猛交在线直播| 欧亚日韩三区| 最新日产中文在线麻豆| 91色欧美| 视频在线观看一二三区| 都市久久精品激情亚洲| 91亚洲欧美综合高清在线| 色色色999| 精品亚洲| 自拍亚洲综合| 天天干天天做| 日韩精品一区二区高清| 久久原创中文| 另类图片五月| 国产 日韩 欧美高清 | 天美传媒国产原创中文字幕亚洲欧美另类 | 国产精品高朝久久久久久久| 五月香婷婷| 女欧美一区二三区| 成人精品水蜜桃久久久久久久| 丁香五月婷婷基地| 老熟女搡BBBB搡BBBB视频| 二级毛片| 色呦呦、国产精品| 综合久久六月久久婷婷| 夫妻天天操岛国视频| 亚洲欧美精品久| 色丁香五月婷婷| 天天弄天天操| 97色在线视频| 任我爽在线视频免费观看 | 99热| 欧美日韩国产精品久久色婷婷| 玖玖97综合| 人人操人人摸人| 色综合国产在线观看| 色网亚洲人| 9久久美女首页| 久久亚洲不卡| 精品久久人妻成人网| 欧美亚洲国产91在线| 亚洲色图 91| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲日本韩国极品一区二区| 熟女字幕| 国产一区二区三三视频| 免费观看一区| 欧美色图亚洲色,麻豆| 日本99一区二区| 高清不卡视频| 婷婷色色网| 日本熟妇人妻中出视频| 免费的黄片有限公司| 国产精品乱码久久| 亚洲精品97p| 亚洲污污网站| 十八禁黄色成人网站观看| 人妻熟女字幕一区二区| 欧美视频中文字幕区| av在线观看不卡网站| 久久久久亚洲熟妇熟女| 一区二区高清视频| 啪啪啪综合| 久久久久久久久女黄| 久久久专区| 中 文字幕一区二区三四 五 区日 日 骚| 嗯嗯啊在线视频| www.激情| 超碰99在线观看| 久久久国产三级黄色片| 久久久久成人亚洲国产| 国产 热久久久久国产精品| 伊人久久综合影院| 天天躁日日躁成人字幕aⅴ| 亚洲国产精品久久AV| 欧美亚洲激情| 熟女探花啪啪| 中文操逼字幕| 日本中文字幕不卡视频| 天美精品原创av片国产| 亚洲综合另类| 思思久热在线精品66| 加勒比伊人| 国产精品人妻无码久久久老鸭窝 | 国产成人自拍视频在线| 伊人久久大香大香线蕉中文| 日韩中文字幕在线视频观看| 久久肏大逼| 国产精品亚洲免费| 天天天天操| 色五91| 成人无码专区精品视频| 伊人久久大香线综合无码| 成人综合网 欧美| 91国产美女丝袜足交精品视频| 久久久久元码视频| 午夜精品久久久99热蜜桃的功能特点| 日韩电影免费网站麻豆视频| 亚洲资源吧| 久久免费少妇| 国产强奸91| 日本精品高清一二区一本到| 免费一级视频特黄色大片| 95人妻爽爽人人做人人澡| 日韩美一区| 操死我了嗯嗯嗯| 久艹99| 欧美97爱| 亚洲精品尤物yw在线影院| 啪啪啪精品视频| 狠狠干狠狠干| 青青草精品| 208天天久久九九九| 久久久久久久97| 欧 美 自 拍 偷 拍| 日本日皮视频逼| 九九热免费国产视频婷婷伊人五月 | 国产91美女高潮| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 精品亚洲国产成人AV制服丝袜| 成人情色一区二区| 国产精品网站免费| 国产AV天美传媒一区二区三区 | 激情五月天网站| 91热情品| 中文字幕AV中出| 日韩操p| 蜜乳av首页| 久久深夜无码| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲九九爱| 精品九九九九九九| 一区二区三区探花在线观看| 九九无码| 青操影院| 一级片视频啪啪| 日韩一级片| 99只有精品| 色吧91| 国产无套粉嫩白浆在| 欧美一二三区四五区| 激情另类激情| 国产一在线观看| www鬼畜国产男人的天堂| 不卡六六在线91| www.久久制服糖| 骚货人妻偷情自拍在线视频| 91美女国产在线| 7777奇米影视久久| 91九九九馒头| 亚洲欧美97| 日韩三级天堂在线观看| 国产精品网站www| 蜜臀久久99精品久久久久久无删减 | 综合五月婷婷| 青青草中日韩在线| 91影库| 色盈盈影院| 起碰97| 淮穴色AV| 91日韩国产欧美亚洲另类精盘州至城都| 美中日韩无码| 天天色怡春院| 8x福利精品第一福利视频导航| 国产四虎在线| 成人国产二区三区在线,男女精品。| 日本www操操操| 国产视频小说| 亚洲囯产精品女人久久久| 天天日日本| 久久精品国产亚洲AV清纯| 欧美天天拍| 青草精品视频-日本久久久久网站| 久久精品99| 精品十八在线观看| 亚洲欧美激情在线视频| 欧美在线第五页| 黄色性爱网网| 懂色av中文字幕| 国产综合操逼高清| 日夜尻逼网| 欧美成人性爱视频大全| 97在线日韩中文字幕| 伦理片秋霞免费影院| 精品女同一区| 啊啊啊啊好多水| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 精品176精品2| 一个色导综合| 人人妻人人色| 国产福利在线视频网站| 98福利在线视频| 久久一区二区三区入口| 亚洲日韩资源| 婷婷99狠狠躁天天躁| 97免费在线观看| 九九热免费在线国产视频伊人五月| 久久综合九色综合欧洲98| 午夜欧美J进J出白浆流出久久久| 一本色道久久天天射天天干| 久久綜合很很很| 日操粉逼逼| 97人人爱人人乐| 99久久久无码| 精品人妻1区| 一二三卡欧美日韩人妻免费精品| 五月丁香六月婷| 超碰2017| 亚洲揄拍网| 立川理惠无码一区二区| 国产精品天堂| 中文字幕日韩人妻视频一区二区三区交换夫妻| 亚洲第一狼人丝袜美女另类 | 91麻豆va国产精品| 男女国产精品| 欧美老妇女内射网址| 新婚人妻扶着粗大强行坐下| 欧美高清91| 久草色悠悠在线视频| 熟女人妇一区二区三区| 天堂综合网| 极品少妇99| 婷婷亚洲综合| 三级日本一区二区三区| 日韩av情韩国爱禁区av一区二区| 大香蕉九九| 97资源视频| 亚洲欧洲日韩中文字幕一区| 伊人97色天使| 中文字幕日本久久| 97超碰人人操人人操| 亚洲综合伊人| 久久色一区| 色综合色欲色综合色综合色综合| 91精品国产91久久青草| 亚洲啪啪啪啪视香蕉| 欧美日韩高潮喷水91| 岛国网址国产| 加勒比伊人| 精品人妻视频一区二区在线播放 | 果冻传媒A片一二三区| 97亚洲性爱| 这里都是精品在线观看| 日韩精品色呦呦| 欧美日韩另类激情图片| 97网址97| 色狠人在线99| 精品国产一区二区三区av在线资源| 天堂俺去俺来也www久久婷婷| 亚洲色图欧美| 日韩在线观看AV| 老女人老91妇女老热女| 亚洲中文制服诱惑| 婷婷综合激情| 风流老熟女一区二区三区l| 日韩啊V| 91综合站| 久久东京热成人| 九九av| 美国久久一二三四| 亚洲熟妇图片| 伊人久久88国产女| 亚洲熟女中文字幕在线| 成人三一级一片aaa| 一本色道综合久久欧美| 久久97超碰| 97亚洲中文| 久久岛国| 国产免费内射视频| 青青草色AV| 嗯嗯嗯啊啊在线观看| 97精品在线| 色天堂在线观看| 99热这里只有是精品10| 东北女人| 午夜啊啊啊| 无码人妻丰满熟妇奶水区毛片| 99啪| 午夜呻吟欧美| 国产精品久久发布| 18一区二区三区| 一牛影视久久久一区二区三区| 精品女人999| 国产少妇与亚洲av| 天美AV片| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 九九热九九| 噜噜在线| 91精品国产一区三一| 天天舔日美女视频| 狠狠色五月亚洲91| 日本高清视频在线观看黄已三辽| 亚欧美色图| 欧美啪啪啪91| 性欧美999| 欧美天天干| 国产午夜精品在线观看| 国产精品一区二区a| 影音先锋每日最新资源在线观看| 日韩黄片影院| 国产精品视频麻豆入口| 国语精品内射在线观看| 日韩av影片在线观看| 大香蕉久久| 综合国产97| av麻豆啪啪|