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的疑问相关推荐

  1. jQuery08源码 (5140 , 6057) DOM操作 : 添加 删除 获取 包装 DOM筛选

    jQuery.fn.extend({//$('ul').find('li').css('background','red');//$('ul').find( $('li') ).css('backgr ...

  2. jquery17 DOM操作 : 添加 删除 获取 包装 DOM筛选

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. 锋利的jQuery--jQuery与DOM对象的互相转换,DOM的三种操作(读书笔记一)

    1.jQuery对象就是通过jQuery包装DOM对象后产生的对象.   2.jQuery对象和DOM对象的相互转换.   良好的书写风格: var $input=$("input" ...

  4. DOM操作之自定义属性

    DOM操作之自定义属性 目录: DOM操作之自定义属性 1.介绍 2.作用 3.获取属性值 3.1 区别 4.设置属性值 4.1 区别 5.移除属性 6.H5自定义属性 6.1 作用 6.2 注意 6 ...

  5. 为什么DOM操作很慢

    转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来 ...

  6. Jquery基础之DOM操作

    Jquery基础之DOM操作 Dom是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DO ...

  7. 如何控制product search attribute支持的操作类型

    Created by Jerry Wang on Mar 19, 2014 需求: 需要用代码控制每个search attribute 所支持的操作类型 每个attribute支持的operator列 ...

  8. html中dom多会有影响吗,DOM操作造成的页面卡顿问题及解决

    相关目录 以下为我总结的其他性能优化点,欢迎参考,指点及吐槽 前言 界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很 ...

  9. python界面卡顿_前端页面卡顿、也许是DOM操作惹的祸?

    界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化 ...

  10. python 全栈开发,Day54(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)...

    04-jQuery的属性操作 jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如at ...

最新文章

  1. ios中常用数据类型相互转换
  2. Linux-vmware tools安装与cdrom挂载
  3. Linux sem_init函数用法
  4. QTP自动化测试视频系列
  5. 读《程序是怎样跑起来》第五章有感
  6. QTP 11 补丁大全
  7. DataGridView很详细的用法
  8. Flask入门之上传文件到本地服务器
  9. findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
  10. 项目人力资源管理重点梳理
  11. php想做一个无刷新弹窗,php+ajax实现无刷新的新闻留言系统
  12. 集成AGC崩溃服务如何生成iOS符号文件表并上传
  13. 微信公众号如何推广自己的小程序以及操作步骤
  14. 32-【算法与数据结构】伪代码与流程图
  15. 安卓手机格式化怎么弄_一加6/7/7Pro怎么从氢OS安卓10降级安卓9系统-完美降级教程...
  16. 程序猿头头(this的绑定)
  17. .net设计模式 (享元模式)学习笔记
  18. 一寸照片压缩到20k_师大er:关于证件照你需要知道这些干货!(/^^)/ 顺便免费冲印高清照片~...
  19. 大物下(大学物理知识点回顾与典型题解析
  20. 简单excel宏工具对数据进行脱敏

热门文章

  1. leetcode算法题--叶值的最小代价生成树
  2. react: nextJs koa project basic structure
  3. scala------------:: , +:, :+, :::, +++的区别
  4. MICRA OPENCART 自适应主题模板 ABC-0678-02
  5. 第 3 章 MySQL 存储引擎简介
  6. shell中强制声明变量
  7. vector容器与iterator迭代器
  8. javascript 操作日期 测试(注意浏览器兼容问题)
  9. WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...
  10. 23设计模式简介笔记