日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的疑问的全部內容,希望文章能夠幫你解決所遇到的問題。

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