CNode

node.js 页面渲染模块

3342479384发布于13 年前最后回复13 年前15 回复14559 浏览0 收藏

现在有一些爬取任务, 但有些站点的页面是需要先渲染,才能得到相应的数据。 直接拉源码分析。获取不到数据。 请问下,node.js 有没有相应的可以渲染页面的模块?

查看回复

回复 (15)

Z
zhihuzeye#1·13 年前

爬虫可以用cheerio

3
342479384#2·13 年前
引用 zhihuzeye爬虫可以用cheerio

这个可以渲染页面吗?

Z
zhihuzeye#3·13 年前
引用 zhihuzeye爬虫可以用cheerio

@342479384 一定要渲染的话用jsdom,不过性能不如cheerio,先试试cheerio吧

3
342479384#4·13 年前
引用 zhihuzeye爬虫可以用cheerio

@zhihuzeye 我现在就是在使用jsdom ,不过貌似无法渲染。。 能加个QQ联系一下吗?

B
bigfang#5·13 年前
引用 zhihuzeye爬虫可以用cheerio

@342479384 你说的这个“渲染页面”具体指的什么?猜测你是想表达“网页上有些内容是异步加载的”? 首先请确定自己理解了你提到的那些“术语”

3
342479384#6·13 年前
引用 zhihuzeye爬虫可以用cheerio

@bigfang 有可能是异地加载的,有些数据,直接查看页面源代码看不到相应的值,但是浏览器有显示。懂不?呵呵

Y
youxiachai#7·13 年前

http://phantomjs.org/ 你需要这个玩意。。。

3
342479384#8·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

之前用过这个,不过速度太差,而且易崩溃。不知是不是不会用的原因

3
342479384#9·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

这个,你有实用的示例嘛?

Y
youxiachai#10·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

@342479384 没办法,速度的确是硬伤,不过这也没办法啊。。。。我的解决策略就是先用cheerio 进行页面的解析,然后,自己分析页面把那些异步加载的dom 丢到另外一个队列去,然后修改dom 里面的引用。这也就算崩溃也不会影响到主任务,然后记录,奔溃日志,不断重新跑就好了。。

Y
youxiachai#12·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

@342479384 这个不好分享。。。。因为这个没有通用性。。

Y
youxiachai#14·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

@342479384 其实我觉得cheerio + request 跟符合你的需求,用cheerio 解析页面,把那些异步加载的请求给request 处理,页面的相关请求规则可以用firebug 来找出来。最后可以在本地用jquery 把数据整合起来

3
342479384#15·13 年前
引用 youxiachaihttp://phantomjs.org/ 你需要这个玩意。。。

@youxiachai 谢谢。不过貌似有点太折腾了。。我看下。。

参与回复
登录后即可参与回复。登录