请假下大家,如何用php抓取 页面上 js动态加载来的内容,
file_get_contents 只能获取 用查看源码看到的源码,,其实页面上还有别的内容,请大家给些建议..
碰巧最近在琢磨类似的功能,虽然还没有实践,但是也来说下个人见解吧
js动态加载的内容如何抓取,我觉得可以分2种情况 第一种:加载的内容通过ajax请求的,那么可以在控制台看下请求的是哪个url,返回的是什么结果,js是怎么样把返回的结果处理后附加到dom上的,然后自己也去抓取那个url再解析下就行了,如果是需要登陆后才能抓的,那就带上cookie就好了
第二种:加载的内容是无需发起ajax请求的,而是根据已存在的内容经过处理后加载的,比如说当前js里的变量,dom里的内容,这个就得去看代码分析了...
还有的方法就是装个能解析js的php扩展...像V8js啊,php_js_ext啊都可以试试,把核心js改动下丢进去跑,个人觉得这个方法很蛋疼,浪费时间,不过具体情况具体分析吧
php无法执行js代码,这个你得用phantomjs
file_get_contents 顾名思义抓取得是file里面的内容。
而页面(file)都是在浏览器加载后转变成DOM,同样页面上js动态加载来的内容也是DOM(其并没有改变页面本身),所以自然file_get_contents无法取到。
要取js动态加载来的内容,当然解铃还须系铃人,使用js原生方法或者jQuery咯。
以上如有错误,欢迎指正。
碰巧最近在琢磨类似的功能,虽然还没有实践,但是也来说下个人见解吧
js动态加载的内容如何抓取,我觉得可以分2种情况
第一种:加载的内容通过ajax请求的,那么可以在控制台看下请求的是哪个url,返回的是什么结果,js是怎么样把返回的结果处理后附加到dom上的,然后自己也去抓取那个url再解析下就行了,如果是需要登陆后才能抓的,那就带上cookie就好了
第二种:加载的内容是无需发起ajax请求的,而是根据已存在的内容经过处理后加载的,比如说当前js里的变量,dom里的内容,这个就得去看代码分析了...
还有的方法就是装个能解析js的php扩展...像V8js啊,php_js_ext啊都可以试试,把核心js改动下丢进去跑,个人觉得这个方法很蛋疼,浪费时间,不过具体情况具体分析吧
php无法执行js代码,这个你得用phantomjs
file_get_contents 顾名思义抓取得是file里面的内容。
而页面(file)都是在浏览器加载后转变成DOM,同样页面上js动态加载来的内容也是DOM(其并没有改变页面本身),所以自然file_get_contents无法取到。
要取js动态加载来的内容,当然解铃还须系铃人,使用js原生方法或者jQuery咯。
以上如有错误,欢迎指正。