php抓取网页数据

我有这样的一些需求,抓取百度外卖商户端的网页https://wmpass.baidu.com/ucen...,但是这个网页是使用模块化前端框架写的,查看源代码就只能看到一些渲染之前的源代码,我用的querylist获取到的不是页面渲染之后的数据,请问这个怎么获取渲染后的源代码,我是需要通过php获取渲染后的html页面,不是浏览器F12查看

阅读 8.3k
6 个回答

先回答一下,其他回答的疑问吧

恩,我觉得吧,问题的意思是怎么批量抓取由 js 渲染的数据,我举个例子,https://zhuanlan.zhihu.com/p/...

  • 查看源代码,会发现有一个 <textarea id="preloadedState" hidden></textarea > 里面的是原始 json 数据,会由 js 具体获取展示

  • 使用 F12 查看,就是查看 js 生成的之后的用户看到的 dom 结构了

所有这两者是有区别的

这里我只是举个例子,数据藏在页面上还好处理,我看到过有其他的,页面先加载框架,然后直接 ajax 一个请求,获取真正的数据,在展示处理。

如果查看某个网页,肯定是使用 F12 ,很简单

如果批量抓取,传统的就是抓取源代码,不一定能获取真正的用户看到的内容。


我的答案

我分享过两篇文章

都不是我写的,我觉得不错,所以分享出来的。

这里一个基本的思路是使用,使用一些 headless 浏览器,比如 phantomjs 有浏览器的功能,可以直接执行 js 代码,然后抓取执行完 js 代码后的内容

我来推荐几个爬虫的东西
Goutte 国外非常火的一个爬虫库,支持渲染过后的,
Beanbun 国内写的一个PHP爬虫框架,才出没有好久。
Embed 国外一个库,我个人觉得很好用
...
其余的请到https://packagist.org 里面去搜索我就不详细说了

我认为题主首先应该找到你要抓取的准确链接,之后用curl模拟访问这个链接,因为是App,所以,就相当于访问接口,OK的,用这种方式比较方便

可以使用Casperjs,获取执行后的页面

file_get_contents($url);

推荐问题