使用爬虫拿取开心网(www.kaixin001.com)中好友的ID、名字时需要经过登陆页面
下面是用代码来实现登陆并拿取数据:
package com.kaixin001;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;
import com.kaixin.commons.Globals;
import com.kaixin.utils.commonshc.UTF8PostMethod;
/**
* 开心网登录
* @author fuyun
* 2009-9-12
*/
public class Kaixin {
// <div class="srr">
// <div class="vafname">
// <div class="r w100 tar">
private static final NodeFilter SRR_DIV_CLASS = new AndFilter(
new TagNameFilter("div"), new HasAttributeFilter("class","srr"));
private static final NodeFilter VAFNAME_DIV_CLASS = new AndFilter(
new TagNameFilter("div"), new HasAttributeFilter("class","vafname"));
private static final NodeFilter TAR_DIV_CLASS = new AndFilter(
new TagNameFilter("div"), new HasAttributeFilter("class","r w100 tar"));
private static final NodeFilter FILTER_A = new TagNameFilter("a");
static final String LOGON_SITE = " www.kaixin001.com" ;
static final int LOGON_PORT = 80;
public static void main(String[] args) throws Exception{
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
NameValuePair[] parr = new NameValuePair[10];
parr[0] = new NameValuePair("rcode", "");
parr[1] = new NameValuePair("url", "/home/");
parr[2] = new NameValuePair("rpkey", "");
parr[3] = new NameValuePair("diarykey", "");
parr[4] = new NameValuePair("invisible_mode", "0");
parr[5] = new NameValuePair("email", "fuyun369@126.com");
parr[6] = new NameValuePair("password", "5201314");
parr[7] = new NameValuePair("code", "");
parr[8] = new NameValuePair("btn_dl","%B5%C7%C2%BC");
parr[9] = new NameValuePair("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
UTF8PostMethod postMethod = new UTF8PostMethod(" http://www.kaixin001.com/login/login.php");
postMethod.setRequestHeader("Referer", " http://www.kaixin001.com/login/login.php");
postMethod.setRequestBody(parr);
int statusCode = client.executeMethod(postMethod);
//==========================================================
System.out.println(statusCode);
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
// 从头中取出转向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
//System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
GetMethod get = new GetMethod(" http://www.kaixin001.com/" + location);
System.err.println(get);
client.executeMethod(get);
String html = get.getResponseBodyAsString();
//System.out.println(html);
Parser nodeParser1 = Parser.createParser(html, Globals.CHARSET_UTF8);
NodeList nodeList1 = nodeParser1.parse(TAR_DIV_CLASS);
Parser nodeParser2 = Parser.createParser(nodeList1.toHtml(), Globals.CHARSET_UTF8);
NodeList nodeList2 = nodeParser2.parse(FILTER_A);
Node aNode3 = nodeList2.elementAt(0);
String msgUrl = "http://www.kaixin001.com"+aNode3.getText().split("href=")[1].substring(1, 15);
System.out.println(msgUrl);
GetMethod get1 = new GetMethod(msgUrl);
System.err.println(get1);
client.executeMethod(get1);
//String html1 = get1.getResponseBodyAsString();
// System.out.println("***"+html1);
Parser nodeParser11 = Parser.createParser(html, Globals.CHARSET_UTF8);
NodeList nodeList11 = nodeParser11.parse(SRR_DIV_CLASS);
Parser nodeParser22 = Parser.createParser(nodeList11.toHtml(), Globals.CHARSET_UTF8);
NodeList nodeList22 = nodeParser22.parse(VAFNAME_DIV_CLASS);
Parser nodeParser33 = Parser.createParser(nodeList22.toHtml(), Globals.CHARSET_UTF8);
NodeList nodeList33 = nodeParser33.parse(FILTER_A);
System.out.println(nodeList33.toHtml());
if(nodeList33 != null && nodeList33.size()>0){
for(int a=0;a<(nodeList33.size());a++){
Node aNode33 = nodeList33.elementAt(a);
System.out.println("好友名:"+aNode33.toPlainTextString());
String friendId = aNode33.getText().split("uid=")[1].substring(0,
;
String friendUrl = "http://www.kaixin001.com/home/"+aNode33.getText().split("uid=")[1].substring(0,
;
System.out.println(friendId);
System.out.println(friendUrl);
}
}
}
}
}
分享到:
相关推荐
这三个标签进一步强调了本文的核心主题:如何通过代码实现登录界面。这涉及到UI设计、输入验证、错误处理等多个方面,对于初学者来说,掌握这些基础知识至关重要。 #### 部分内容详解 提供的代码示例是一个典型的...
创建一个名为"login"的文件夹,其中包含"login.vue",用于实现登录页面的界面和逻辑。在这个页面中,用户输入用户名和密码,然后点击登录按钮触发登录请求。 7. **store** 文件夹: Vuex是Vue的状态管理库,用于...
通过本文的介绍,我们了解到使用JavaScript实现登录验证和页面跳转的基本方法。具体技术点包括: - 使用`<form>`标签和`<input>`标签构建登录表单。 - 使用JavaScript函数进行用户名和密码的验证。 - 使用`window....
这个"SSM框架实现登录注册功能完整代码"项目,通过IDEA(IntelliJ IDEA)进行整合,提供了从零开始构建登录注册功能的全套源码,包括所需的jar包和配置文件。下面我们将详细探讨SSM框架实现登录注册功能的关键知识点...
标题中的"idea+maven+tomcat实现登录案例源代码"表明这是一个使用IntelliJ IDEA集成开发环境(IDE),Maven构建工具以及Tomcat服务器来实现的登录功能的示例项目。这个项目的主要目的是通过代码展示如何在Java Web...
### ASP.NET登录与注册页面代码实现详解 在Web开发领域,用户身份验证是必不可少的一个环节。ASP.NET提供了强大的工具和框架来帮助开发者实现这一功能。本文将深入解析一个基于ASP.NET并通过C#语言实现的登录及注册...
web实现注册登录功能源代码,完整代码教程。适合新开发人员练习使用
总之,这个项目提供了一个纯代码实现登录注册功能的示例,对于想要深入学习iOS开发,特别是想掌握UI编程的开发者来说,是一个很好的实践机会。通过这种方式,开发者可以更好地理解iOS界面构建的底层机制,并锻炼自己...
本文将详细讲解如何实现小程序的登录/注册页面设计,包括关键的代码实现和功能模块。 首先,界面设计是用户体验的核心。在本案例中,开发者采用了youzan组件库来构建页面,该组件库提供了丰富的UI元素,如icon、...
SSM框架下实现登录注册的示例代码 SSM框架下实现登录注册的示例代码是基于SSM框架的登录注册系统的示例代码,主要介绍了SSM框架下实现登录注册的示例代码的详细过程。该示例代码对大家的学习或者工作具有一定的参考...
在本文中,我们将深入探讨如何实现新浪微博的代码登录,并理解其背后的原理和技术细节。通过登录微博,我们可以获取必要的Cookie信息,以便在后续的HTTP请求中模拟已登录状态,访问受保护的用户页面。 首先,我们...
五、代码实现 在设计好数据库和连接数据库后,我们可以开始编写代码了。在本文中,我们使用 C# 语言来编写代码,首先我们需要在 App_Code 文件夹中创建一个名为 UserCon 的类,然后在其中编写代码来验证用户的登录...
在这个项目中,“vuejs实现用户登录注册及评论功能代码”旨在教你如何利用Vue.js来构建一个完整的用户系统,包括用户登录、注册以及评论功能。 一、用户登录注册模块 在用户登录注册部分,你需要理解以下Vue.js的...
这个"Android代码-用户注册登录的简单实现.zip"压缩包可能包含了一个简单的示例项目,用于演示如何在Android应用中实现这一功能。 首先,让我们详细探讨一下Android用户注册登录的基本流程和涉及的技术点: 1. **...
基于C++实现的登录系统项目源码+代码注释(实现日志功能和账号管理功能).zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业...
【.NET 源代码实现登录控件详解】 在.NET框架中,开发人员经常需要创建自定义登录控件以满足特定的应用程序需求。这个“登陆控件示例”提供了源代码,帮助开发者理解如何在C#或VB.NET环境中构建一个功能完备的登录...
本示例是基于C#编程语言实现的自动登录功能,特别针对校内网的登录场景。下面我们将深入探讨这个话题,了解C#如何实现自动登录,以及涉及到的相关技术点。 首先,自动登录的核心在于存储和处理用户的登录凭证,通常...
java实现简单的登录注册功能,数据存储在一维数组中,实现登录,注册,修改密码,修改信息等功能,可以在讲课中当例子使用。
本压缩包"jsp实现用户自动登录功能代码源.zip"包含的是一套实现用户自动登录功能的JSP源代码,这对于理解和实践Web应用中的用户认证和会话管理具有重要的学习价值。 在Web应用中,用户自动登录通常涉及到以下几个...
代码实现的关键部分包括: 1. **初始化对话框**:在 OnInitDialog() 函数中,我们可以设置控件的初始状态,如默认文本或禁用状态。 2. **数据绑定**:在 DoDataExchange() 函数中,使用DDX_Text()和DDV_XXX()函数...