我想抓取一个网站的内容似乎是在JavaScript或其他技术的工作。我正在使用xpath来查找页面上的内容。我可以在浏览器中看到使用萤火虫的内容,但如果我通过curl/wget保存源代码或下载源代码,内容从页面中丢失。这怎么可能 ?提前基于JavaScript的网站如何不同?
0
A
回答
1
一些内容
感谢通过JS动态加载。您需要以某种方式运行JS,例如在像PhantomJS这样的无头浏览器中运行几秒钟以加载动态内容。然后运行DOM,类似于jQuery中的.html()
这样做,以获取呈现的内容。
据我所知,这是类似于他们的代理人how Opera Mini does it他们重新编码并将其发送到您的设备之前:
服务器响应发送回正常 - 当这是由接收Opera转码服务器,他们解析标记和样式,执行JavaScript,并将数据转码为Opera二进制标记语言(OBML)。这个OBML数据由Opera Mini在用户设备上逐步加载。
的Opera Mini的入门from Wikipedia:
的JavaScript只会暂停前的一对夫妇的小型服务器上运行秒,由于资源的限制。
根据Opera Mini 4的文档,在将页面发送到移动设备之前,其onLoad事件被触发,所有脚本最多允许执行两秒钟。 setInterval和setTimeout函数被禁用,因此在执行之前等待一段时间的脚本根本不会执行。脚本完成或达到超时后,所有脚本都会停止并且页面被压缩并发送到移动设备。
0
通常,页面加载并请求以json或jsonp形式返回的内容(ajax)。这通常是非常方便的,因为json比html更容易解析。
但是,如果您之前没有做过,那么确定如何制作正确的ajax请求可能是一项挑战。
相关问题
- 1. 基于PHP的网站如何提供不同版本的网站?
- 2. 网页搜刮基于javascript的网站
- 3. 基于网站在Magento如何获得基于网站在Magento
- 4. 如何刮基于Flash的网站?
- 5. 如何复制基于PHP的网站?
- 6. 如何测试基于Ajax的网站?
- 7. 如何使用Windows窗体登录基于JavaScript的网站?
- 8. Joomla基于微型网站的URL的不同默认页面
- 9. 如何在PHP codeigniter中创建不同的基于会员的网站?
- 10. 如何在IIS7最佳的设置不同版本的网站(基于HTTPS)
- 11. 基于Ajax的OpenGraph网站
- 12. 基于闪光的网站
- 13. 基于网页域名/网站的Javascript命令/变量
- 14. 相同的JavaScript不同的网站,截然不同的表现
- 15. 如何删除index.html基于angularjs网站上的网址
- 16. 如何为网站的不同部分分开JavaScript代码?
- 17. 如何通过JavaScript读取两个不同的网站
- 18. javascript下拉菜单:如何链接到不同的网站?
- 19. 如何让不同的网站登录
- 20. 关于如何保持网站偏好的不同选项?
- 21. 如何在joomla网站中限制基于网站的IP地址?
- 22. 如何为基于html的fanpage和基于php的网站使用相同的数据库?
- 23. 如何去调用一个基于JavaScript的外部网站形式
- 24. 使用不同的WordPress主题取决于不同的网站?
- 25. 基于会员的网站的网站地图
- 26. 基于IIS的网站(.Net)的网站统计程序
- 27. 基于ColdFusion中的REST的网站
- 28. 基于ajax的网站的php爬虫?
- 29. 基于Symfony2的网站中的.htaccess
- 30. 基于CSS的网站的FWA
许多框架(如Angular.js和Backbone.js)都会使页面的源看起来与实际显示的不同。您将希望尝试使用Chrome开发人员工具捕获*渲染* DOM(我还没有发现Mozilla开发人员工具在这方面非常有用) –
谢谢,如何在这种情况下以编程方式获得完整的DOM? – ankit