这一久一直在尝试利用java写一个爬虫程序。java语言里面可以利用现成的工具包HttpClient+jsoup就能完成简单爬虫程序的编写。
爬虫程序的第一部就是“模拟登录”,模拟登录顾名思义也就是模拟浏览器提交表单的过程,因此需要对这个过程进行抓包分析,分析出在网站登录期间都提交了一些什么参数,然后利用这些参数构造相应的post请求;对于这种简单的抓包需求,我们用IE的F12开发者工具足够了用不着Wireshark这样复杂的工具。
最开始我尝试抓取登录知乎和自己学校的教务处,总的来说这两个网站的模拟登录post请求挺简单的。下面这个截图是知乎就是知乎的登录参数:
下面是抓取的整个过程:
1.打开IE浏览器,按下F12打开开发人员工具。
2.打开知乎的登录页,输入你的账户和密码或许还需要验证码,并提交。
3.这个时候开F12工具里面会充满了各种http请求和响应,找到方法为post的那几个请求并点开各个请求的正文(post方法和get方法的不同大家可以自行百度),总有一个有知乎的登录参数。如下图所示,第四个就是我们想要的,点开就能看见如上图所示的登录参数
4.对post参数的解析。总的来说一个网站登录时候post的参数分为随机和不是随机的两种。知乎登录需要四个参数,
_xsrf,email,password以及rember_me四个参数。
_xsrf:这是一个变动的值,但是我们可以从登录页面的源代码中找出该值来,具体到编程的时候你需要先向http://www.zhihu.com/这个网址发送一个get请求,然后从返回的结果中利用正则表达式获取到_xsrf的值。就像下面这样。
HttpClient httpClient = new HttpClients.createDefalut();
HttpGet httpGet = new HttpGet("http://www.zhihu.com/