标签:
上一篇写到,要是分析每一个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来把我关注的人的微博都能爬出来。
最后欢迎各位大神继续批评指正啊,小弟在这感谢了(●‘?‘●)
标签:
原文地址:http://my.oschina.net/u/259421/blog/500277