我有这样的一些需求,抓取百度外卖商户端的网页https://wmpass.baidu.com/ucen...,但是这个网页是使用模块化前端框架写的,查看源代码就只能看到一些渲染之前的源代码,我用的querylist获取到的不是页面渲染之后的数据,请问这个怎么获取渲染后的源代码,我是需要通过php获取渲染后的html页面,不是浏览器F12查看
我有这样的一些需求,抓取百度外卖商户端的网页https://wmpass.baidu.com/ucen...,但是这个网页是使用模块化前端框架写的,查看源代码就只能看到一些渲染之前的源代码,我用的querylist获取到的不是页面渲染之后的数据,请问这个怎么获取渲染后的源代码,我是需要通过php获取渲染后的html页面,不是浏览器F12查看
我来推荐几个爬虫的东西
Goutte 国外非常火的一个爬虫库,支持渲染过后的,
Beanbun 国内写的一个PHP爬虫框架,才出没有好久。
Embed 国外一个库,我个人觉得很好用
...
其余的请到https://packagist.org 里面去搜索我就不详细说了
2 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答1.1k 阅读
1 回答946 阅读
1 回答899 阅读
1 回答897 阅读
先回答一下,其他回答的疑问吧
恩,我觉得吧,问题的意思是怎么批量抓取由 js 渲染的数据,我举个例子,https://zhuanlan.zhihu.com/p/...
查看源代码,会发现有一个
<textarea id="preloadedState" hidden></textarea >
里面的是原始 json 数据,会由 js 具体获取展示使用 F12 查看,就是查看 js 生成的之后的用户看到的 dom 结构了
所有这两者是有区别的
这里我只是举个例子,数据藏在页面上还好处理,我看到过有其他的,页面先加载框架,然后直接 ajax 一个请求,获取真正的数据,在展示处理。
如果查看某个网页,肯定是使用 F12 ,很简单
如果批量抓取,传统的就是抓取源代码,不一定能获取真正的用户看到的内容。
我的答案
我分享过两篇文章
https://segmentfault.com/p/12...
https://segmentfault.com/p/12...
都不是我写的,我觉得不错,所以分享出来的。
这里一个基本的思路是使用,
使用一些 headless 浏览器,比如 phantomjs 有浏览器的功能,可以直接执行 js 代码,然后抓取执行完 js 代码后的内容
。