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

上一篇写到,要是分析每一个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来把我关注的人的微博都能爬出来。

最后欢迎各位大神继续批评指正啊,小弟在这感谢了(●‘?‘●)

时间: 2025-01-02 16:03:14

HtmlUnit 网络爬虫 菜鸟的学习笔记(三)的相关文章

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

这次我以爬新浪微博为例,这个过程太纠结了,参考了好多大神的帖子,不过还是遗留了很多问题,我们慢慢来看,希望大神帮于指正,我的方法暂时来说还是比较挫的 登陆问题 爬新浪微博首先要登陆,之前爬的妹纸网站,由于不用登陆,所以没这一步,但是爬新浪微博我们必须要先登录,但是要涉及到一个问题,那就是验证码,验证码从我现在百度到的,和自己的理解,感觉暂时还是不能解决的,除非手工输入,因为本身验证码就是防止恶意登陆,防爬虫的,所以建议想试试的朋友用暂时用不输入验证码的账号试试(关于验证码,期盼大神可以给些提示)

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

什么是HtmlUnit HtmlUnit是一个开源的浏览器模拟工具,可以方便我们模拟浏览器的行为,例如打开网页,提交表单等,这样我们可以用他来爬网页 官网下载:http://htmlunit.sourceforge.net/ java API:http://htmlunit.sourceforge.net/apidocs/index.html 怎么用HtmlUnit (我的IED是idea,用的maven工程) 在pom文件里导入HtmlUnit的依赖包 <dependency>     &l

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

CCNA学习笔记三——STP生成树协议

广播风暴:当网络中存在物理环路,会产生广播风暴 STP协议:Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风暴的产生 STP算法:(所有选择都是比小-小的当选) 选择根网桥(Root Bridge):在网络中的所有交换机中选择一台 选择依据:网桥ID(网桥优先级+MAC地址) 选择根端口(Root Ports):在所有非根网桥中选择一个 选择依据:(1)根路径成本最低 (2)直连网桥ID最小 (3)端口ID最小 选择指定端口(Designated Ports

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle&lt;T&gt;

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T> 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现和源码 下一篇用它们做一个多语言的demo 这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突. 先看一下它的实现思想 在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没