日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

pyV8不支持dom操作,关于PyV8的支持DOM的疑问

發布時間:2025/7/25 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyV8不支持dom操作,关于PyV8的支持DOM的疑问 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pyV8不支持dom操作,關于PyV8的支持DOM的疑問

PYV8只支持純js語句。不過官方提供了w3c.py以及brower.py,可以基于此來完成,但這個用起來還是比較麻煩。

在爬取網站時,需要提交請求,其中有一個參數是執行了一大段js來得到的,本來以為用PyV8可以執行js解決的,結果由于涉及到了一點dom的東西,而原生PyV8貌似沒有自帶瀏覽器環境, 所以就會報錯,導致無法執行下去。

而PyV8給了w3c.py與browser.py可以支持dom操作,不過在頭部引入了from w3c import parseString, Document, HTMLElement,import browser 并不能解決問題。

要是涉及的DOM操作不多的話,自己模仿一下就好了,寫一些document,window,location對象,加上一些方法。反正v8支持getter,setter,defineProperty等新特性。
要是深度依賴DOM,就考慮phantom.js或者你提到的那幾個擴展庫。

使用PyV8解析HTML文檔 - 為程序員服務
http://ju.outofmemory.cn/entry/36085
加入w3c browser 模塊,可以參考下這篇文章

-----------------

PYV8只支持純js語句,不支持dom操作,而需要簽名的js后面部分參數有dom操作,現在運行報錯,生成不了簽名,把后面dom操作代碼去掉生成的簽名是錯誤的也不能用。

不需要操作他js里面的dom,只要他不報錯生成正確的簽名就可以了,他那js用到了很多dom操作,自己一個個模擬還是很麻煩的,試了定義外面的兩個變量, 到里面getElementById還是報錯,必須根據報錯一個個定義才行了。

dom操作的函數定義避免生成簽名報錯,下面是部分函數定義:

var window=function(){}; window.localStorage=function(){return this;}; window.localStorage.getItem=function(){return this;}; window.sessionStorage=function(){return this;}; window.sessionStorage.getItem=function(){return this;};var document=function(){}; document.getElementById = function(){return this;}; document.getElementById.clientHeight=function(){return this;}; document.getElementById.clientHeight.uaCheck=function(){return this;}; document.getElementById.clientHeight.uaCheck.is360se=function(){return this;};

注意:如果有下級屬性的函數定義,必須在里面返回 return this; 否則下級熟悉無法定義成功的,另外這種定義方法只是為了不報錯可以執行下去,需要返回值的需要另外處理。

另:如果上述方法還是達不到目的,可以考慮使用phantomjs,phantomjs是模擬真實瀏覽器的可以最大化抓取到所有網頁,可以跟在瀏覽器控制臺一樣輸入函數獲取需要的返回值。

===================

本人微信公眾帳號: 心禪道(xinchandao)

本人微信公眾帳號:雙色球預測合買(ssqyuce)

?

總結

以上是生活随笔為你收集整理的pyV8不支持dom操作,关于PyV8的支持DOM的疑问的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。