84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
请假下大家,如何用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咯。
以上如有错误,欢迎指正。