使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。

不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了,一般网页会自动跳转到登录页面,要求先登录。

另外,即使先在登录页面进行了登录,然后再转到要登录才能访问的网页时,如果没在第二次连接中加入之前登录成功后的session,那么访问仍然会失败。URLConnection每次打开一个连接,如果不进行设置,则默认会以新的session去访问,那么相当于又需要重新登录,因此需要加入登录成功的session才能访问到需要登录的页面。

以下通过一个小例子来说明该如何操作:

1.首先找到登录界面

2.查看表单提交给哪个action

3.来到单一的表单提交页面

4.修改表单提交方式为get

5.随便输入用户名和密码后浏览器的地址栏就有这么一串地址,只要把user和password改成正确的,那么直接在浏览器输入这串地址就直接登录,类似的,直接用URLConnetion打开这串数据的连接即实现了登录,获取服务器返回过来的session,下次再连接该网站的别的需要登录的页面时带上这个session即可成功访问了。

代码如下(具体网站地址已隐去):

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

public class Test

{

public static void main(String[] args) throws Exception//以下仅举个小例子,不处理异常

{

String id="xxxxx";

String passwd="xxxxx";

String loginUrl="http://xxxxx/login.aspx?__VIEWSTATE=dDw2Nzg5Mjk2NTY7O2w8b2s7Pj5OOk%2B5QUCLHuIzBtlhui5aZbY11Q%3D%3D&txt_user="+id+"&txt_password="+passwd+"&ok.x=35&ok.y=12";

URL url = new URL(loginUrl);

URLConnection conn = url.openConnection();

String sessionValue = conn.getHeaderField("Set-Cookie");//获取session值

String[] sessionId = sessionValue.split(";");

URL newUrl = new URL("http://xxxxx/student_info1.aspx");

URLConnection newConn = newUrl.openConnection();

newConn.setRequestProperty("Cookie", sessionId[0]);

newConn.connect();

BufferedInputStream bis = new BufferedInputStream(newConn.getInputStream());

InputStreamReader inputStreamReader = new InputStreamReader(bis,"utf-8");

BufferedReader br = new BufferedReader(inputStreamReader);

String str = null;

while ((str = br.readLine()) != null)

{

System.out.println(str);//输出登录后才能访问的网页的html源码,可以根据需要获取相关信息

}

}

}

java 登录编程_Java编程通过session访问需要登录的页面相关推荐

  1. java没思路_Java编程没思路写不出代码怎么办

    成功不是你想要就能得到的,而是需要你不断努力争取的.时间飞逝转眼间已经学习java编程近一个月了.从零基础到现在能够自己独立完成一段完整的代码,成就感驱使着我学习更多的知识,做出更加优秀的作品. 1. ...

  2. java 用户登录模块_Java SSH框架系列:用户登录模块的设计与实现思路

    1.简介 用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问. 二.简单设计及实现 本程序是基于 ...

  3. java培训机构_java编程软件培训机构

    java编程软件培训机构,南京小码王科技培训有限公司,欢迎来电预约试听课:13851536647(郑老师)小码王实施以成就感驱动发自内在的建构主义教育,以面向未来高层次人才素质模型为导向,锻炼学生抽象 ...

  4. java 令牌解析_Java编程guava RateLimiter实例解析

    本文主要研究的是Java编程guava RateLimiter的相关内容,具体如下. 场景1 在流量监管中的应用 约定访问速率(CAR)是流量监管常用技术之一,可以应用在端口进和出方向,一般应用在入方 ...

  5. java的成员方法_java编程中的成员方法是什么?

    DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...

  6. java 异步事件_Java编程入门——异步事件:轮询与中断

    CPU几乎把所有的时间都花费在从内存获取指令并运行它们的过程中.然而,CPU和主存仅仅只是计算机硬件系统中众多组件的其中两个.一个完整的系统还包含其他的设备,比如: 硬盘或者固态硬盘,用来存储程序和数 ...

  7. java split()方法_Java编程性能优化一些事儿

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...

  8. java异步处理_Java编程开发好入门吗 消息队列的用途有哪些

    Java编程开发好入门吗?消息队列的用途有哪些?消息队列是指能够提供消息排队消费功能的软件程序,是消息队列中间件的一部分.消息队列中间件是分布式系统中重要的组件.接下来就给大家讲解消息队列的优势.类型 ...

  9. java 延时发送邮件_java编程实现邮件定时发送的方法

    本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...

最新文章

  1. OpenCV+python:图像梯度
  2. 论文|记忆网络之Memory Networks
  3. 农业走出去-国际农民丰收节贸易会·刘合光:走向全球思考
  4. iptables的基础知识-iptables中的状态检测
  5. 轮胎扎了“钉子”该怎么办?到底要不要拔掉?
  6. Protocol Buffer入门——轻松搭建java环境 .
  7. 作业19——夜间模式的开启与关闭,父模板的制作
  8. 摆放家具-家具类以及创建家具对象
  9. timeSetEvent、回调函数、CCriticalSection
  10. Springboot项目固化依赖的那点事
  11. JavaScript学习笔记:对象
  12. 一年了,写点关于人生的东西吧
  13. 联通3G用户破千万 建成全球规模最大WCDMA网络
  14. (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
  15. SGX Enable
  16. 4.VEH(向量化异常处理)
  17. 毕业论文开题报告撰写指南-宾夕法尼亚州立大学研究生写作中心
  18. PS小知识(五)——羽化(图片拼接后去缝、自然过渡渐变)
  19. 计算机室英语单词怎么读,“计算机”英语单词怎么读?
  20. pythonfor循环文件写入失败_Python:使用for循环写入文件

热门文章

  1. 天猫整站SSM-分页-总结(做个人学习笔记整理用)
  2. 图解springmvc 执行流程
  3. 在mybatis中调oracle dblink存储过程
  4. Newtonsoft.Json反序列化(Deserialize)出错:Bad JSON escape sequence
  5. ASP.NET MVC5(一):ASP.NET MVC概览
  6. sublimeText OmniMarkupPreviewer 404
  7. OC Swift中UITextFiled、UITextView限制输入字数
  8. 初步认识spring mvc
  9. NYOJ88(数论)
  10. Jquery Money 验证,转换成千分位