现在动态网站很普遍,ajax动态内容是在html载入以后,或者是执行用户的动作以后才显示。所以,现在的网路爬虫程序很重要的功能要求就是能爬动态内容,需要有javascript的执行能力


微博这一类的主流网站现在都普遍采用ajax载入数据,也就是如果你通过传统的爬虫方式post一个url或者请求参数过去,接受响应的字元串,也就是响应的html代码,会发现里面没有你要的数据,这是因为这个代码里面有一些js脚本,等到浏览器显示这个网页的时候,这些js就会运行,从而显示你想要看的数据,ajax还用来在你操作的时候不刷新网页,只载入一部分页面数据,如果你发现一个网站在你操作的时候只有页面部分数据在变动,网址不变,就是ajax,这个很容易判断。另外,如果你发现网页浏览器显示网页载入完毕,然后页面上还有一些数据正在载入,这种数据也属于ajax非同步载入的。判断好之后,就要采用能处理ajax的方式抓取数据了。

这里有两种方法:
1. 分析ajax脚本,找到对应的载入数据的js脚本,然后分析其逻辑,一般也是生成一个http请求,然后这个http请求一般只返回jason格式的数据。你可以通过代码模拟这个请求来获取数据。但是这种办法比较老土,也很麻烦需要你研究js代码的逻辑,你如果不会写代码就比较麻烦。当然有一些fiddler之类的网页通信抓包分析工具可以帮你一些忙。

2. 使用现在比较主流的智能采集软体如八爪鱼,需要支持浏览器和可视化采集,这样软体会自动模拟人的操作完成所有工作,包括运行界面的脚本,最后你会在界面上看到数据,就和上网看网页没任何区别,但是此类工具可以自动提取你在网页上看到的数据。用滑鼠点点就提取到数据了,这种方式适合不懂代码的人。

3. 当然你也可以上网上找一下别人都是怎么采集微博数据的。然后拿别人的劳动成果来用,这个就更简单。比如,我按照你的要求在数多多上搜索微博数据采集规则就出来好多。截图如下:可以看到有微博账号,话题,评论,明星等等,别人也都详细写了如何用这些东西。

下面是随便点了第一个进去,这是个采集模板,下载下来运行就可以了。第一个运行时候的截图如下:

这是下载这些微博采集模板的地址:数多多数据包,大数据共享交易市场平台,支持C2C数据买卖,海量数据下载,数据质量高,与八爪鱼数据采集平台无缝对接


因为PC端微博的源码包裹在了

FM.view((.*))

这个块中。你需要先用正则表达式把它提取出来,然后就可以拿到页面的内容了。另外有一些内容是通过ajax动态载入的,比如评论列表、用户主页的部分微博数据。我写了一个分散式的微博爬虫,其中对微博解析模块做了大量的工作,可以参考一下

项目地址:ResolveWang/WeiboSpider


应该是采用ajax输出内容,爬虫无法获取量小的话可以采用微薄介面获取对应的数据http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5
考虑能运行JS的爬虫


额。。不用围脖。可能是ajax获取来的信息。这样的话,你用firebug或者chrome的查看Elements就能看到了。
先看看API就什么都懂了


推荐阅读:
相关文章