非浏览器模拟JavaScript - 是否可能?

Tal*_*tia 9 javascript php parsing curl emulation

我正在开发一个新项目,包括获取一个网页,(使用PHP和cURL)解析HTML和javascript,然后处理结果中的数据.

当网站使用javascript通过AJAX获取数据时,基本上我碰到了一堵砖墙.在这种情况下,除非javascript在浏览器中运行,否则初始数据不会出现在获取的页面中.

这有什么PHP库吗?(我怀疑不是,但我可能是错的.)

我真的宁愿将其构建为基于服务器的解决方案,否则我不得不为此构建一个应用程序并使用mozilla和/或IE运行时库 - 这种目的无法实现.

bob*_*nce 17

你会需要:

  • 一个JavaScript解释器
  • 一个DOM Level 2 Core和HTML实现
  • 500克非标准但常用的DOM扩展
  • 一小撮DOM Level 2 Style(也可能意味着CSS解释器和布局引擎)
  • 酸奶罐,圆头剪刀和粘背塑料

组装完组件后(记得要成熟一下来帮助你完成沙盒),你会发现你所拥有的内容基本上与网页浏览器无法区分.

JAVA不是服务器上的shell构建的一部分.V8/SquirrelFish是我需要转换为PHP的C++代码.

将JS引擎移植到PHP将是一项艰巨的任务,并且由此产生的性能可能非常糟糕.你甚至无法真正摆脱JavaScript的近乎解决方案,因为有很多页面使用像jQuery这样的可怕复杂的库来做所有事情,这需要深入的JS支持.

我认为你不能完全用PHP做这件事.你必须连接Java/Rhino/HTMLUnit或者像Mozilla这样的适当的Web浏览器.如果你的托管环境没有为你提供编译和部署那种东西所需的灵活性,那么你必须转向使用shell(最好是VPS)的更好的托管设置.

如果你能以其他方式避免这种不愉快,通过特殊的封装已知页面的AJAX访问,就可以做到这一点.