抓取网页信息时,有一个一直困扰我的问题,那就是有些网页的信息是动态生成的,网页载入后,接着执行js,js从服务器端获取数据后填充到网页,现在这种网页实现特别比较多,归功于ajax技术的使用了,用这种技术生成的网页,单靠一个网址是没办法获取网页的信息,火车采集器在这方面还没有去做什么工作吧,今天问了群里的哥们,他们也有这么方面的经验,特别是TommGG这个牛人,下面是他们的聊天记录,那个艾欧里亚是偶自己,呵呵
TommGG给推荐了第一种方法:
1、 利用firefox的组件
这是TommGG给提供建议,以前使用过firefox,用鼠标选择了页面内容,查看源码就能看到最新的html了,TommGG能想到,他有才。
然后中途杀出个keven(渔夫),keven(渔夫)说把这个问题解决了,可以年收入几百万了,我惊了!!钱对他们怎么那么容易赚??下面是keven(渔夫)的方法:
1. 直接解析这些JS,不执行,从中提取数据,这是最好的方法
这个方法没想过哦,一直抓html的哦,要是数据直接就在js里用这种方法了,有些网页的js也是在后台生成的。这样的好处估计是可以减少代码量吧,到前台在执行js生成html,速度也不会太慢了吧,没这么做过哦。
2. 让IE执行JS,从IE中可以获取到执行后的HTML代码
要么说要研究下firefox呢,firefox肯定有这方面的组件可用的。
3. 你的JS数据如果是JSON ,那就好了。
用ajax技术的网站,内容都是从服务器端返回json,要模仿客户端向服务器端发异步请求?有些网站一进去就是:正在加载。。。
后来聊着聊着就跑题了,关于如何用技术赚钱?关于二奶,等等,有钱人的生活啊,我这菜鸟看着觉得距离好遥远,500万从人家嘴里那么轻易说出来。。。。
群聊天记录:
艾欧里亚[466026875] 2009-05-19 09:25:04
有个问题,有的网页的内容是延迟载入的,这个怎么抓啊,像这个http://blog.21ic.org/user1/5475/index.html
[TomGG]C%2FVB(124485506) 2009-05-19 09:23:54
http://news.xinhuanet.com/photo/2009-05/15/content_11377265.htm
艾欧里亚[466026875] 2009-05-19 09:26:31
Tomgg,这是?
[TomGG]C%2FVB(124485506) 2009-05-19 09:26:06
傻狐狸
艾欧里亚[466026875] 2009-05-19 09:28:37
就喜欢往洞里钻啊
艾欧里亚[466026875] 2009-05-19 09:30:11
网页时js生成的,怎么抓啊??
[TomGG]C%2FVB(124485506) 2009-05-19 09:30:18
去研究firefox吧
艾欧里亚[466026875] 2009-05-19 09:33:06
是啊,它可以看到最终的html,不知道怎么弄啊
艾欧里亚[466026875] 2009-05-19 09:33:51
要用firefox的组件?
[TomGG]C%2FVB(124485506) 2009-05-19 09:33:07
恩
艾欧里亚[466026875] 2009-05-19 09:38:32
谢谢,知道方向了,问题是不是在于怎么获取最新的dom,而不是一开始载入的dom,这方面用.net的web browser行不行啊,没用过那个
艾欧里亚[466026875] 2009-05-19 09:49:46
tommgg,有这方面的文章推荐下呗,谢了啊!!
[TomGG]C%2FVB(124485506) 2009-05-19 09:49:17
你去查微软研究院的论文
[TomGG]C%2FVB(124485506) 2009-05-19 09:50:00
基于dom树的网页正文提取的模板自动生成
艾欧里亚[466026875] 2009-05-19 09:55:21
哦,看来您真是太有研究了!!太谢谢了啊!
keven(渔夫)(241160990) 2009-05-19 09:56:53
基于DOM
基于正则表达式
DOM优点结构清晰,可以用XPATH定位节点,缺点是占用大量内存,要面对非结构完好的html
keven(渔夫)(241160990) 2009-05-19 09:57:55
正则表达式,速度快,不用构造过多的对象
缺点是要写烦人的正则表达式
艾欧里亚[466026875] 2009-05-19 10:03:23
其实我想知道怎么获取最新的dom,因为页面载入后又要执行里面的js,就像获得执行完js后的都没
艾欧里亚[466026875] 2009-05-19 10:03:35
执行完js后的dom
keven(渔夫)(241160990) 2009-05-19 10:04:25
1. 直接解析这些JS,不执行,从中提取数据,这是最好的方法
2. 让IE执行JS,从IE中可以获取到执行后的HTML代码
keven(渔夫)(241160990) 2009-05-19 10:05:05
你的JS数据如果是JSON,那就最好了
艾欧里亚[466026875] 2009-05-19 10:09:33
哦,应该是json,呵呵
[lucklrj]php(7691272) 2009-05-19 10:17:53
你解决这个问题,
你可以年收入几百万了,
[TomGG]C%2FVB(124485506) 2009-05-19 10:18:10
[lucklrj]php(7691272) 2009-05-19 10:19:27
核心办法就是写个程序实现浏览器解析xml
产生一个最终的html 再分析
网络采集(310105089) 2009-05-19 10:20:52
年收入几百万是做梦