您的位置:首页 > 理论基础 > 计算机网络

HtmlUnit 网络爬虫 菜鸟的学习笔记(三)

2015-09-01 00:00 351 查看
上一篇写到,要是分析每一个url,包括滚动条滚动的url和分页的url就可以构造出来url来访问,从而抓取信息,但是这样要是想把我关注的人的所有微博全部输出的话,岂不是每个关注的人的url都要去看和分析,这样工作量就很大了

所以今天刚我就仔细分析了一下的url,发现其实变化量除了page和pagebar这两个参数,还有其他的参数需要关注: 该人的主页id,domain和id,下面说明一下

给一个分页的url参考一下
http://weibo.com/u/1645851277?pids=Pl_Official_MyProfileFeed__22&is_search=0&visible=0&is_tag=0&profile_ftype=1&page=" + (page++) + "&ajaxpagelet=1&ajaxpagelet_v6=1&__ref=/u/1645851277&_t=FM_144101367516634

给一个滚动条的url参考一下
http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100505&from=myfollow_all&pre_page=1&page=1&max_id=&end_id=3881954464220733&pagebar=0&filtered_min_id=&pl_name=Pl_Official_MyProfileFeed__22&id=1005051645851277&script_uri=/u/1645851277&feed_type=0&domain_op=100505&__rnd=1441013708418
上面标红的可以看到,1645851277就是主页的id,domain就是100505,id就是1005051645851277,其实就是domain+主页id得到的

这些参数要怎么获得呢?

首先是主页id,这个其实在我关注的那个页面可以找到的,比较简单,搜一下id,就看到了,然后用获得标签的方式即可获得

获得之后就构造好了访问这个人的微博主页的url,然后就需要找domain和id了,用webClient.getPage进去之后,这里debug可以看到这样的配置,嘿嘿,是不是很明显



但是问题来了,如何获得这个$CONFIG参数,开始我也很纳闷,这个可咋搞啊,放在CDATA块中的,然后百度了很多htmlunit获取CDATA的方法,没有找到,很郁闷,但是这个时候突然发现,这个是放在<script>标签里的,也就是说这是脚本,我一下就想到htmlunit一个api

HtmlPage.executeJavaScript("脚本")

这个方法就是允许你直接去执行一些脚本语言,所以果断用这个主页的HtmlPage对象去执行了这个方法

configMap = (Map<String, String>) page3.executeJavaScript("$CONFIG").getJavaScriptResult();


这是个参数,所以直接取到,强转为Map,然后直接get出需要的属性,搞定,修改之后的代码就可以自己根据查出来的各种id来把我关注的人的微博都能爬出来。

最后欢迎各位大神继续批评指正啊,小弟在这感谢了(●'◡'●)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: