C#爬虫:html中script标签的解析

wm0508 发布于 2013/05/17 14:46
阅读 1K+
收藏 0

c# 控制台程序写的一个爬虫。

爬虫遇到JS代码时,尤其是像新浪博客中的翻页,其“下一页”的链接是隐藏在JS代码中的,这是需要对Script标签进行解析。

看了一下V8和SpiderMonkey,不过资料比较少,不知道怎么用。

HTML解析器HtmlParser也看了一下,不知道能不能对script标签进行解析,如果可以,怎么做?

请各位大神不吝赐教,感激不尽!

加载中
0
pfdoschina
pfdoschina

感觉楼主这样绕的圈子太大了吧。

如果是有针对性的抓去,直接分析一下“下一页”触发的脚本,找到最终生成的请求格式。

0
红星xx
红星xx

没有 必要搞的 那么复杂 ,爬虫 直接分析纯html 就行了 。

特别是 新浪博客 都是有  文章列表的 ,基本上文章都能收录到。

0
w
wm0508

引用来自“pfdoschina”的答案

感觉楼主这样绕的圈子太大了吧。

如果是有针对性的抓去,直接分析一下“下一页”触发的脚本,找到最终生成的请求格式。

非常感谢您的回答!

“下一页”触发的脚本没看懂,不过,当点击“下一页”的时候,页面的内容是改变了,但是链接不变,这样的脚本应该不好找请求的格式吧,我想。

比如:徐小明博客http://blog.sina.com.cn/u/1300871220 希望您有空进去看看,帮忙分析一下,感激不尽!!!

 

 

0
w
wm0508

引用来自“红星”的答案

没有 必要搞的 那么复杂 ,爬虫 直接分析纯html 就行了 。

特别是 新浪博客 都是有  文章列表的 ,基本上文章都能收录到。

非常感谢您的回答!

是有文章列表,可是,文章太多,一页是显示不完的,“下一页”的链接又隐藏在script脚本中,应该说是完全隐藏,字面上看不出什么规律。

比如:徐小明博客http://blog.sina.com.cn/u/1300871220 有空的时候,麻烦您进去帮忙分析分析,感激不尽!!!

0
红星xx
红星xx

你只要 一级, 一级的 爬下去就行了 ,你看 导航 的 博文目录链接 。 http://blog.sina.com.cn/s/articlelist_1300871220_0_1.html

给定一个 域名, 如果你的 蜘蛛 做不到 爬层级 url ,只是采集固定地方 , 那也就是个 采集器而已 ,不能叫蜘蛛,网站一般都有url的 直接链接 ,

0
w
wm0508

引用来自“红星”的答案

你只要 一级, 一级的 爬下去就行了 ,你看 导航 的 博文目录链接 。 http://blog.sina.com.cn/s/articlelist_1300871220_0_1.html

给定一个 域名, 如果你的 蜘蛛 做不到 爬层级 url ,只是采集固定地方 , 那也就是个 采集器而已 ,不能叫蜘蛛,网站一般都有url的 直接链接 ,

非常感谢!这确实是个好办法!

不过,也有时候,会遇到那种链接写在脚本中的情况,这时必须要对JS代码进行解析,这时项目需求,必须要能解析。不知道这样应该怎么办??

 

0
红星xx
红星xx
目前蜘蛛能动态解析 javascript 只有 google ,不过 google 这项技术也是试验性质,解析出来的内容也只是参考 ,baidu都没有动态解析 javascript的能力  ,适应每个不同的站的javascript代码太难了 。 你不必太过 纠结 。
0
w
wm0508

引用来自“红星”的答案

目前蜘蛛能动态解析 javascript 只有 google ,不过 google 这项技术也是试验性质,解析出来的内容也只是参考 ,baidu都没有动态解析 javascript的能力  ,适应每个不同的站的javascript代码太难了 。 你不必太过 纠结 。
我们老大的意思是既然浏览器中可以解析出来,程序也一定可以。google的V8我也看了一下,资料比较少,英文还居多,不知道该怎么运用到.net平台中。
0
天体图
天体图
http://blog.sina.com.cn/s/article_sort_1300871220_10001_1.html
http://blog.sina.com.cn/s/article_sort_1300871220_10001_2.html
http://blog.sina.com.cn/s/article_sort_1300871220_10001_3.html
http://blog.sina.com.cn/s/article_sort_1300871220_10001_4.html
http://blog.sina.com.cn/s/article_sort_1300871220_10001_5.html
…………………………………………………………………………………………
http://blog.sina.com.cn/s/article_sort_1300871220_10001_386.html
0
pfdoschina
pfdoschina

引用来自“wm0508”的答案

引用来自“pfdoschina”的答案

感觉楼主这样绕的圈子太大了吧。

如果是有针对性的抓去,直接分析一下“下一页”触发的脚本,找到最终生成的请求格式。

非常感谢您的回答!

“下一页”触发的脚本没看懂,不过,当点击“下一页”的时候,页面的内容是改变了,但是链接不变,这样的脚本应该不好找请求的格式吧,我想。

比如:徐小明博客http://blog.sina.com.cn/u/1300871220 希望您有空进去看看,帮忙分析一下,感激不尽!!!

 

 

分析了一下翻页请求。用firebug很直观的看到点击“下一页”后,产生了两次请求:

http://blog.sina.com.cn/s/article_sort_1300871220_10001_2.html
http://blogtj.sinajs.cn/api/num.php?uid=4d89b834&aids=02e36w,02e36u,02e36s,02e365,02e363,02e35c,02e353,02e352,02e34v,02e34l&requestId=aritlces_number_3322
第一个请求中就是下一页的内容,其中最后的2就是页码。单独请求该地址,可以看到下一页内容(注意文本编码)。

第二个请求中是一个脚本函数调用,没仔细看,似乎与正文没什么关系。

返回顶部
顶部