chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

網(wǎng)頁(yè)爬蟲(chóng) JavaScript 頁(yè)面渲染技術(shù)與應(yīng)用

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-25 18:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

廖雨寒 楊彥松 張斌

睿哲科技股份有限公司

一、背景

隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn),網(wǎng)絡(luò)爬蟲(chóng)(web crawler)隨之而生。但是現(xiàn)在的網(wǎng)站很少有純靜態(tài)網(wǎng)頁(yè),大部分網(wǎng)站都通過(guò)JavaScript渲染、ajax異步等實(shí)現(xiàn)網(wǎng)頁(yè)數(shù)據(jù)加載。對(duì)于目前的爬蟲(chóng)框架來(lái)說(shuō),基本都是爬取到的未渲染過(guò)的HTML源碼,所以對(duì)于爬蟲(chóng)來(lái)說(shuō)沒(méi)真正做到瀏覽器的所見(jiàn)即所爬。對(duì)于scrapy來(lái)說(shuō),官方有一個(gè)scrapy-splash項(xiàng)目支持頁(yè)面渲染解析,然而scrapy-splash在高并發(fā)狀態(tài)下極其不穩(wěn)定。一種方案是通過(guò)webkit瀏覽器引擎直接渲染,另一種方案是通過(guò)調(diào)用瀏覽器渲染。通過(guò)幾種方案比較,最終選擇了Google Chrome Devtools Protocol開(kāi)發(fā)渲染功能。

二、渲染方案可行性分析

1.Scrapy-Splash

Scrapy-splash是scrapy官方團(tuán)隊(duì)提供的一個(gè)解決js渲染問(wèn)題的方案。Splash是處理網(wǎng)頁(yè)渲染的模塊,它內(nèi)部使用的開(kāi)源的webkit瀏覽器引擎,通過(guò)HTTP API來(lái)使用渲染服務(wù)。在scrapy中通過(guò)DownloaderMiddleware處理網(wǎng)頁(yè)請(qǐng)求,實(shí)際是去請(qǐng)求splash接口并得到渲染后的數(shù)據(jù)。

Splash優(yōu)點(diǎn):

可以并行處理多個(gè)網(wǎng)頁(yè)

獲取HTML結(jié)果和/或截取屏幕截圖

關(guān)掉加載圖片或使用 Adblock Plus規(guī)則使得渲染速度更快

使用JavaScript處理網(wǎng)頁(yè)內(nèi)容

使用Lua腳本

能夠獲得具體的HAR格式的渲染信息

然而在實(shí)際使用scrapy-splash的過(guò)程中,也遇到過(guò)一些splash的問(wèn)題:

對(duì)于一些特殊網(wǎng)站,并不能很好的處理重定向,比如一些需要通過(guò)js渲染Cookie的頁(yè)面,需要通過(guò)location對(duì)象重定向好幾次才能到真正的頁(yè)面,但是splash只是處理了第一次的渲染Cookie后并沒(méi)有實(shí)現(xiàn)跳轉(zhuǎn)

在并發(fā)的情況下,獲取到的數(shù)據(jù)有時(shí)候是沒(méi)有內(nèi)容的

2.Scrapy-QtWebkit

Splash是采用Webkit引擎實(shí)現(xiàn)的網(wǎng)頁(yè)渲染,可直接采用Webkit對(duì)接Scrapy實(shí)現(xiàn)渲染網(wǎng)頁(yè)。在Qt庫(kù)中有相應(yīng)的QtWebkit模塊,但是在Qt5.6版本以上QtWebkit就被淘汰了,代替它的是QtWebEngine,因此,選擇QtWebKit時(shí),建議使用Qt4或者Qt5.6之前的版本。

Webkit大致通過(guò)View-->Page-->Frame的流程來(lái)加載網(wǎng)頁(yè)。通過(guò)這些模塊,對(duì)于上面splash遇到重定向問(wèn)題和空頁(yè)面問(wèn)題都能得到解決。

Webkit優(yōu)點(diǎn):

細(xì)粒度處理網(wǎng)頁(yè)渲染

資源加載可控

直接交與webkit處理更效率

Webkit缺點(diǎn):

內(nèi)存資源占用較大

高并發(fā)處理網(wǎng)頁(yè)過(guò)多容易引起C底層錯(cuò)誤

三、Google Chrome Devtools Protocol

以上兩種方案,都存在各自的缺點(diǎn), 那有沒(méi)有可能直接通過(guò)調(diào)用瀏覽器加載網(wǎng)頁(yè)呢?事實(shí)上selenium可以操作瀏覽器。selenium操作chrome是使用chromedriver,chromedriver底層應(yīng)用的是Chrome Devtools Protocol,因此,何不直接使用Chrome Devtools Protocol。

Chrome Devtools Protocol介紹

在Chrome/Chromium瀏覽器中,按F12會(huì)彈出調(diào)試工具,它是通過(guò)Chrome Devtools Protocol的協(xié)議來(lái)進(jìn)行數(shù)據(jù)通訊。Chrome Devtools Protocol用來(lái)與瀏覽器頁(yè)面(pages)交互和調(diào)試的協(xié)議通道。它采用websocket來(lái)與頁(yè)面建立通信通道,由發(fā)送給頁(yè)面的Commands和它所產(chǎn)生的Events組成。

在Chrome Devtools Protocol中,有很多不同的功能模塊域(domains),類似于Chrome開(kāi)發(fā)這工具的個(gè)功能模塊。

然而對(duì)于此例的爬蟲(chóng)來(lái)說(shuō),只需要用到Network,Page,Runtime等幾個(gè)功能模塊域:

Network允許跟蹤頁(yè)面的網(wǎng)絡(luò)活動(dòng),它公開(kāi)http, file, data,網(wǎng)絡(luò)請(qǐng)求和響應(yīng)等數(shù)據(jù)信息

Page會(huì)檢查與頁(yè)面相關(guān)的動(dòng)作和事件

Runtime主要用作運(yùn)行JavaScript操作代碼

啟動(dòng)調(diào)試實(shí)例

要使用Chrome Devtools Protocol,需要開(kāi)啟調(diào)試。我們的項(xiàng)目運(yùn)行在服務(wù)器中,所以需要開(kāi)啟無(wú)頭模式 --h(huán)eadless --disable-gpu --no-sandbox。

chrome.exe --remote-debugging-port=9222 --h(huán)eadless --disable-gpu --no-sandbox

如果需要遠(yuǎn)程調(diào)試,可以加上參數(shù)--remote-debugging-address='0.0.0.0'。

操作Chrome Devtools Protocol

通過(guò)以上命令可以啟動(dòng)一個(gè)Chrome調(diào)試實(shí)例,通過(guò)HTTP調(diào)用接口:

http://loacalhost:9222/json

會(huì)得到接口返回的JSON數(shù)據(jù):

"description": "",

"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/A6C1F7B23DFF222A87143ACB37CBF7C4",

"id": "A6C1F7B23DFF222A87143ACB37CBF7C4",

"title": "about:blank",

"type": "page",

"url": "about:blank",

"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/A6C1F7B23DFF222A87143ACB37CBF7C4"

默認(rèn)開(kāi)啟實(shí)例后會(huì)有一個(gè)空的標(biāo)簽頁(yè)(Tab),要?jiǎng)?chuàng)建新的Tab,只需要通過(guò)調(diào)用接口

http://loacalhost:9222/json/new

或者在后面直接添加網(wǎng)址,Tab將會(huì)創(chuàng)建并加載網(wǎng)頁(yè)

http://loacalhost:9222/json/new?http://www.example.com/

在每個(gè)Tab中有一個(gè)webSocketDebuggerUrl字段,它提供了一個(gè)WebSocket接口與Chrome交互。比如要啟用Page模塊域,通過(guò)WebSocket發(fā)送以下命令開(kāi)啟:

{"id":1, "method":"Page.enable", "params":{}}

關(guān)閉Tab

http://loacalhost:9222/json/close/A6C1F7B23DFF222A87143ACB37CBF7C4

四、Scrapy實(shí)現(xiàn)Chrome Protocol下載渲染頁(yè)面

Scrapy是一個(gè)爬蟲(chóng)框架,它使用了Twisted異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊,他的大致架構(gòu)流程如圖

圖 1 Scrapy框架

在圖1中我們看到scrapy處理網(wǎng)絡(luò)請(qǐng)求的是Downloader模塊,他通過(guò)DownloaderHandler下載處理器完成下載網(wǎng)絡(luò)請(qǐng)求,下載處理器使用的是Twisted網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)的,對(duì)于Chrome Protocol來(lái)說(shuō)我們通過(guò)接口操作命令實(shí)現(xiàn)網(wǎng)頁(yè)加載本質(zhì)上是Chrome加載網(wǎng)頁(yè),也就是說(shuō)下載處理是通過(guò)Chrome Protocol接口操作Chrome瀏覽器請(qǐng)求加載并渲染網(wǎng)頁(yè),因此我們需要拿到渲染后的網(wǎng)頁(yè)HTML源碼,需要改寫DownloaderHandler。

然而原生操作Chrome Protocol太繁瑣,我們需要封裝它。在Github上有多種語(yǔ)言實(shí)現(xiàn)了Chrome Devtools Protocol的封裝。對(duì)于Python來(lái)說(shuō),我們使用Pychrome庫(kù)來(lái)操作Chrome Protocol,可以直接用pip安裝模塊:

pip install pychrome

當(dāng)然要使用該模塊得要啟動(dòng)Chrome調(diào)試實(shí)例,通過(guò)實(shí)例的地址和端口號(hào)連接:

browser = pychrome.Browser(url="http://<your_ip>:9222")

通過(guò)new_tab()方法創(chuàng)建tab標(biāo)簽頁(yè),通過(guò)tab.start()啟動(dòng)當(dāng)前tab的websocket鏈接,例如需要啟動(dòng)Network功能域,通過(guò)調(diào)用tab.Network.enable()來(lái)啟動(dòng),通過(guò)tab.Page.navigate(url="http://www.example.com")加載網(wǎng)頁(yè),該頁(yè)面加載時(shí)的一切網(wǎng)絡(luò)活動(dòng)都可以通過(guò)接收websocket響應(yīng)得到j(luò)son數(shù)據(jù)。

這時(shí)會(huì)有一個(gè)問(wèn)題,何時(shí)才算是真正渲染完成頁(yè)面?

圖 2 JS渲染流程

在圖2中是瀏覽器從輸入網(wǎng)址到頁(yè)面加載完成的處理流程,loadEventEnd是真正加載完成,但是在一些使用ajax異步請(qǐng)求的網(wǎng)頁(yè)使用loadEventEnd并不能很好的判斷為渲染結(jié)束,所以這里我們使用JavaScript命令獲取readyState狀態(tài)判斷頁(yè)面是否加載完成:

document.readyState

readyState一共有五種狀態(tài):

uninitialized - XML 對(duì)象被產(chǎn)生,但沒(méi)有任何文件被加載

loading - 加載程序進(jìn)行中,但文件尚未開(kāi)始解析

loaded - 部分的文件已經(jīng)加載且進(jìn)行解析,但對(duì)象模型尚未生效

interactive - 僅對(duì)已加載的部分文件有效,在此情況下,對(duì)象模型是有效但只讀的

complete - 文件已完全加載,代表加載成功

通過(guò)document.readyState == complate來(lái)判斷數(shù)據(jù)的加載進(jìn)度。當(dāng)加載完成時(shí)通過(guò)javascript命令獲取渲染后的HTML源碼:

document.documentElement.outerHTML

在這里我們就可以使用Pychrome替代scrapy的twisted下載處理。

五、結(jié)語(yǔ)

使用chrome devtools protocol來(lái)操作chrome瀏覽器來(lái)渲染頁(yè)面,能基本完成渲染頁(yè)面的需求,一些需要與瀏覽器交互的頁(yè)面也大致能使用JavaScript操作命令,重點(diǎn)是使用chrome操作頁(yè)面渲染會(huì)很占用資源,因此不宜過(guò)多的開(kāi)啟渲染進(jìn)程,多線程下載盡量重用Tab標(biāo)簽頁(yè),因?yàn)槊慷鄤?chuàng)建一個(gè)Tab相當(dāng)于開(kāi)了一個(gè)進(jìn)程,最后,爬蟲(chóng)結(jié)束時(shí),應(yīng)該調(diào)用相關(guān)接口關(guān)閉所有Tab,釋放資源。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    525

    瀏覽量

    56195
  • 應(yīng)用軟件
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    9394
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    京東關(guān)鍵詞搜索商品列表的Python爬蟲(chóng)實(shí)戰(zhàn)

    京東關(guān)鍵詞搜索商品列表 Python 爬蟲(chóng)實(shí)戰(zhàn) 你想要實(shí)現(xiàn)京東關(guān)鍵詞搜索商品的爬蟲(chóng),我會(huì)從 合規(guī)聲明、環(huán)境準(zhǔn)備、頁(yè)面分析、代碼實(shí)現(xiàn)、反爬優(yōu)化 五個(gè)方面展開(kāi),幫助你完成實(shí)戰(zhàn)項(xiàng)目。 一、前置聲明(重要
    的頭像 發(fā)表于 01-04 10:16 ?373次閱讀

    # 深度解析:爬蟲(chóng)技術(shù)獲取淘寶商品詳情并封裝為API的全流程應(yīng)用

    需求。本文將深入探討如何借助爬蟲(chóng)技術(shù)實(shí)現(xiàn)淘寶商品詳情的獲取,并將其高效封裝為API。 一、爬蟲(chóng)技術(shù)核心原理與工具 1.1 爬蟲(chóng)運(yùn)行機(jī)制 網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-17 09:29 ?299次閱讀

    Nginx限流與防爬蟲(chóng)配置方案

    在互聯(lián)網(wǎng)業(yè)務(wù)快速發(fā)展的今天,網(wǎng)站面臨著各種流量沖擊和惡意爬蟲(chóng)的威脅。作為運(yùn)維工程師,我們需要在保證正常用戶訪問(wèn)的同時(shí),有效防范惡意流量和爬蟲(chóng)攻擊。本文將深入探討基于Nginx的限流與防爬蟲(chóng)解決方案,從原理到實(shí)踐,為大家提供一套完
    的頭像 發(fā)表于 09-09 15:52 ?831次閱讀

    從 CPU 到 GPU,渲染技術(shù)如何重塑游戲、影視與設(shè)計(jì)?

    渲染技術(shù)是計(jì)算機(jī)圖形學(xué)的核心內(nèi)容之一,它是將三維場(chǎng)景轉(zhuǎn)換為二維圖像的過(guò)程。渲染技術(shù)一直在不斷演進(jìn),從最初的CPU渲染到后來(lái)的GPU
    的頭像 發(fā)表于 09-01 12:16 ?909次閱讀
    從 CPU 到 GPU,<b class='flag-5'>渲染</b><b class='flag-5'>技術(shù)</b>如何重塑游戲、影視與設(shè)計(jì)?

    知乎開(kāi)源“智能預(yù)渲染框架” 幾行代碼實(shí)現(xiàn)鴻蒙應(yīng)用頁(yè)面“秒開(kāi)”

    近日,知乎在Gitee平臺(tái)開(kāi)源了其自研的鴻蒙“智能預(yù)渲染框架”,并將該框架的Har包上架到OpenHarmony三方庫(kù)中心倉(cāng)。該框架在鴻蒙平臺(tái)首創(chuàng)“智能預(yù)渲染技術(shù),旨在破解應(yīng)用復(fù)雜頁(yè)面
    的頭像 發(fā)表于 08-29 14:32 ?562次閱讀
    知乎開(kāi)源“智能預(yù)<b class='flag-5'>渲染</b>框架” 幾行代碼實(shí)現(xiàn)鴻蒙應(yīng)用<b class='flag-5'>頁(yè)面</b>“秒開(kāi)”

    通道渲染:釋放渲染的全部潛能!通道渲染的作用、類型、技巧

    在3D圖形創(chuàng)作中,渲染通道(RenderPasses)是一項(xiàng)至關(guān)重要的技術(shù),它通過(guò)將復(fù)雜的渲染圖像拆分為多個(gè)圖層,如陰影、光照、法線等,使藝術(shù)家能夠在后期制作中更精準(zhǔn)地控制和調(diào)整畫面。我們常常驚嘆于
    的頭像 發(fā)表于 07-15 14:22 ?619次閱讀
    通道<b class='flag-5'>渲染</b>:釋放<b class='flag-5'>渲染</b>的全部潛能!通道<b class='flag-5'>渲染</b>的作用、類型、技巧

    英語(yǔ)單詞學(xué)習(xí)頁(yè)面+單詞朗讀實(shí)現(xiàn) -- 【1】頁(yè)面實(shí)現(xiàn) ##HarmonyOS SDK AI##

    ?先看一下頁(yè)面效果 ? 整體頁(yè)面是一個(gè)比較簡(jiǎn)潔的頁(yè)面,其中有兩個(gè)特色功能 對(duì)于例句中,能夠?qū)崿F(xiàn)將當(dāng)前的單詞從句子中進(jìn)行識(shí)別并突出顯示 對(duì)于單詞和句子,可以進(jìn)行朗讀,這個(gè)朗讀使用的是Core
    發(fā)表于 06-29 23:24

    ArkUI介紹

    是共用的,但是相比類Web開(kāi)發(fā)范式,聲明式開(kāi)發(fā)范式無(wú)需JS框架進(jìn)行頁(yè)面DOM管理,渲染更新鏈路更為精簡(jiǎn),占用內(nèi)存更少,應(yīng)用性能更佳。 發(fā)展趨勢(shì):聲明式開(kāi)發(fā)范式后續(xù)會(huì)作為主推的開(kāi)發(fā)范式持續(xù)演進(jìn),為開(kāi)發(fā)者
    發(fā)表于 06-24 06:41

    如何用Brower Use WebUI實(shí)現(xiàn)網(wǎng)頁(yè)數(shù)據(jù)智能抓取與分析?

    ? 作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 Browser-use是一款能讓AI智能體像人類一樣操作網(wǎng)頁(yè)的創(chuàng)新工具,與傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)相比,Browser-use能模擬人瀏覽并操作網(wǎng)頁(yè)
    的頭像 發(fā)表于 04-17 17:48 ?1063次閱讀
    如何用Brower Use WebUI實(shí)現(xiàn)<b class='flag-5'>網(wǎng)頁(yè)</b>數(shù)據(jù)智能抓取與分析?

    CPU渲染、GPU渲染、XPU渲染詳細(xì)對(duì)比:哪個(gè)渲染最快,哪個(gè)效果最好?

    動(dòng)畫渲染動(dòng)畫3D渲染技術(shù)需要應(yīng)對(duì)復(fù)雜的計(jì)算任務(wù)和精細(xì)的圖像處理,作為渲染技術(shù)人員,選擇合適的渲染
    的頭像 發(fā)表于 04-15 09:28 ?1524次閱讀
    CPU<b class='flag-5'>渲染</b>、GPU<b class='flag-5'>渲染</b>、XPU<b class='flag-5'>渲染</b>詳細(xì)對(duì)比:哪個(gè)<b class='flag-5'>渲染</b>最快,哪個(gè)效果最好?

    HarmonyOS應(yīng)用高負(fù)載場(chǎng)景分幀渲染

    ,可以采用分幀渲染技術(shù),將原本在一幀內(nèi)加載的數(shù)據(jù)分散到多幀中逐步加載,從而減輕單幀的渲染壓力。不過(guò),分幀渲染需要開(kāi)發(fā)者精確計(jì)算每幀加載的數(shù)據(jù)量,操作較為復(fù)雜,因此建議僅在性能瓶頸明顯且
    的頭像 發(fā)表于 03-25 10:28 ?1021次閱讀
    HarmonyOS應(yīng)用高負(fù)載場(chǎng)景分幀<b class='flag-5'>渲染</b>

    爬蟲(chóng)數(shù)據(jù)獲取實(shí)戰(zhàn)指南:從入門到高效采集

    爬蟲(chóng)數(shù)據(jù)獲取實(shí)戰(zhàn)指南:從入門到高效采集 ? ? 在數(shù)字化浪潮中,數(shù)據(jù)已成為驅(qū)動(dòng)商業(yè)增長(zhǎng)的核心引擎。無(wú)論是市場(chǎng)趨勢(shì)洞察、競(jìng)品動(dòng)態(tài)追蹤,還是用戶行為分析,爬蟲(chóng)技術(shù)都能助你快速捕獲目標(biāo)信息。然而,如何既
    的頭像 發(fā)表于 03-24 14:08 ?1469次閱讀

    Get這個(gè)秘籍,鴻蒙原生應(yīng)用頁(yè)面滑動(dòng)絲滑無(wú)比

    問(wèn)題的解決方案,通過(guò)創(chuàng)新技術(shù)手段解決不同技術(shù)棧下的性能瓶頸,為開(kāi)發(fā)者提供更流暢的頁(yè)面渲染體驗(yàn),有效提升鴻蒙應(yīng)用的頁(yè)面滑動(dòng)流暢度。 ArkUI
    發(fā)表于 03-06 14:41

    從CPU到GPU:渲染技術(shù)的演進(jìn)和趨勢(shì)

    渲染技術(shù)是計(jì)算機(jī)圖形學(xué)的核心內(nèi)容之一,它是將三維場(chǎng)景轉(zhuǎn)換為二維圖像的過(guò)程。渲染技術(shù)一直在不斷演進(jìn),從最初的CPU渲染到后來(lái)的GPU
    的頭像 發(fā)表于 02-21 11:11 ?1608次閱讀
    從CPU到GPU:<b class='flag-5'>渲染</b><b class='flag-5'>技術(shù)</b>的演進(jìn)和趨勢(shì)

    GPU渲染才是大勢(shì)所趨?CPU渲染與GPU渲染的現(xiàn)狀與未來(lái)

    在3D建模和渲染領(lǐng)域,隨著技術(shù)的發(fā)展,CPU渲染和GPU渲染這兩種方法逐漸呈現(xiàn)出各自獨(dú)特的優(yōu)勢(shì),并且在不同的應(yīng)用場(chǎng)景中各有側(cè)重。盡管當(dāng)前我們處在一個(gè)CPU
    的頭像 發(fā)表于 02-06 11:04 ?1569次閱讀
    GPU<b class='flag-5'>渲染</b>才是大勢(shì)所趨?CPU<b class='flag-5'>渲染</b>與GPU<b class='flag-5'>渲染</b>的現(xiàn)狀與未來(lái)