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的疑问相关推荐
- jQuery08源码 (5140 , 6057) DOM操作 : 添加 删除 获取 包装 DOM筛选
jQuery.fn.extend({//$('ul').find('li').css('background','red');//$('ul').find( $('li') ).css('backgr ...
- jquery17 DOM操作 : 添加 删除 获取 包装 DOM筛选
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- 锋利的jQuery--jQuery与DOM对象的互相转换,DOM的三种操作(读书笔记一)
1.jQuery对象就是通过jQuery包装DOM对象后产生的对象. 2.jQuery对象和DOM对象的相互转换. 良好的书写风格: var $input=$("input" ...
- DOM操作之自定义属性
DOM操作之自定义属性 目录: DOM操作之自定义属性 1.介绍 2.作用 3.获取属性值 3.1 区别 4.设置属性值 4.1 区别 5.移除属性 6.H5自定义属性 6.1 作用 6.2 注意 6 ...
- 为什么DOM操作很慢
转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来 ...
- Jquery基础之DOM操作
Jquery基础之DOM操作 Dom是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DO ...
- 如何控制product search attribute支持的操作类型
Created by Jerry Wang on Mar 19, 2014 需求: 需要用代码控制每个search attribute 所支持的操作类型 每个attribute支持的operator列 ...
- html中dom多会有影响吗,DOM操作造成的页面卡顿问题及解决
相关目录 以下为我总结的其他性能优化点,欢迎参考,指点及吐槽 前言 界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很 ...
- python界面卡顿_前端页面卡顿、也许是DOM操作惹的祸?
界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化 ...
- python 全栈开发,Day54(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)...
04-jQuery的属性操作 jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如at ...
最新文章
- ios中常用数据类型相互转换
- Linux-vmware tools安装与cdrom挂载
- Linux sem_init函数用法
- QTP自动化测试视频系列
- 读《程序是怎样跑起来》第五章有感
- QTP 11 补丁大全
- DataGridView很详细的用法
- Flask入门之上传文件到本地服务器
- findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
- 项目人力资源管理重点梳理
- php想做一个无刷新弹窗,php+ajax实现无刷新的新闻留言系统
- 集成AGC崩溃服务如何生成iOS符号文件表并上传
- 微信公众号如何推广自己的小程序以及操作步骤
- 32-【算法与数据结构】伪代码与流程图
- 安卓手机格式化怎么弄_一加6/7/7Pro怎么从氢OS安卓10降级安卓9系统-完美降级教程...
- 程序猿头头(this的绑定)
- .net设计模式 (享元模式)学习笔记
- 一寸照片压缩到20k_师大er:关于证件照你需要知道这些干货!(/^^)/ 顺便免费冲印高清照片~...
- 大物下(大学物理知识点回顾与典型题解析
- 简单excel宏工具对数据进行脱敏
热门文章
- leetcode算法题--叶值的最小代价生成树
- react: nextJs koa project basic structure
- scala------------:: , +:, :+, :::, +++的区别
- MICRA OPENCART 自适应主题模板 ABC-0678-02
- 第 3 章 MySQL 存储引擎简介
- shell中强制声明变量
- vector容器与iterator迭代器
- javascript 操作日期 测试(注意浏览器兼容问题)
- WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...
- 23设计模式简介笔记