爬虫

来源:互联网 发布:淘宝全部平台 编辑:程序博客网 时间:2024/04/30 00:11

爬虫核心在于代理。先把这话撂在这里,我暂时也没能力去验证。
我暂时接触到的爬虫核心在于IO流。以前我理解的IO流作用仅限收发文件,没想到在网络中开一个输出流到一个url,就相当于向网站发送一个post或者get请求;开一个输入流到的话就是获取response,如果是图片路径的话就是下载。
知道这一点的话,简易的爬虫实现起来异常简单,使用自带的URL和HttpURLConnection就行。
我试着用了两个第三方库:jsoup,可以用类JQuery语言解析dom;FileUtils,下载文件比我自己写的流好用很多(读源码分析,不服为啥比我叼)。其他还有HttpClient,大名鼎鼎的客户端HTTP编程工具包。
期间碰到一些有趣的问题:
1.403 Forbidden。发送请求头User-Agent:Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)来伪造浏览器标实。还有可能封IP,这就涉及到代理IP,不了解,暂时不打算深究。
2.js动态加载的网页。服务器响应的网页都是原始的网页,js动态加载的 数据是没有的,据说可以用HtmlUnit
3.爬自己网站时,被自己网站的session校验给拦住了,感觉蠢出翔来。。。。具体表现为:我向服务器端发送用户名密码模拟登陆,然后在服务器端顺利走了一遍登录流程,拿到了通行证(保存了session),结果还是被拦截器的session校验给踢了出来。也就是说,我明明保存了session,却没什么卵用。以下贴一些解释(转载):


实际上网页和服务器是两套应用,客户端访问服务器一次,实际上网页获取后,连接立即就断了,这样的话,说明服务器是不会保持长效连接的,但是在现实情况登录的话,客户端好像一直在保留连接,那么这种情况就和先前模式似乎不同;当然不是,断开连接是整个B/S架构的根本原理所在,因此怎么去保持这些连接,实际上就是利用Cookie,访问网页时,每次网页的服务器会产生一个Cookie,记录当前网页的一个键值,如果使用登录了后,服务器端的Session就会和客户端的一个Cookie产生连接,这样每次给这个页面发送客户端的Cookie所记录的Session的标识,即可完成登录的模拟。


session和cookie解析

0 0
原创粉丝点击