网络爬虫中的模拟登陆获取数据(实例教学)
3,036 阅读
原文地址:http://blog.csdn.net/qy20115549/article/details/52249232
目录
#模拟登陆的原因 很多网站,我们是无法直接获得服务器返回的数据,需要输入用户名及密码才能看到数据。如我们登陆人人网时,网站网址http://www.renren.com/。如图所示,看到的是一个登陆的界面,必须输入用户名及密码才能看到返回的数据。
加载中...
原文地址:http://blog.csdn.net/qy20115549/article/details/52249232
目录
#模拟登陆的原因 很多网站,我们是无法直接获得服务器返回的数据,需要输入用户名及密码才能看到数据。如我们登陆人人网时,网站网址http://www.renren.com/。如图所示,看到的是一个登陆的界面,必须输入用户名及密码才能看到返回的数据。
欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

登陆后,看到的数据,便可以通过爬虫将网站的html,或者json数据抓下来,解析。
#实战(demo)
package renren.renren;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class RenRen {
/*以下是模拟登陆程序*/
/*输入你的用户名及密码 ,这里输入*/
private static String userName = "";
private static String password = "";
// Don't change the following URL
private static String renRenLoginURL = "http://www.renren.com/PLogin.do";
// The HttpClient is used in one session
private HttpResponse response;
private DefaultHttpClient httpclient = new DefaultHttpClient();
{
(renRenLoginURL);
List<NameValuePair> nvps = <NameValuePair>();
nvps.add( (, ));
nvps.add( (, ));
nvps.add( (, ));
nvps.add( (, userName));
nvps.add( (, password));
{
httpost.setEntity( (nvps, HTTP.UTF_8));
response = httpclient.execute(httpost);
} (Exception e) {
e.printStackTrace();
;
} {
httpost.abort();
}
;
}
String {
response.getFirstHeader();
(locationHeader == ) {
;
}
locationHeader.getValue();
}
String {
(redirectLocation);
ResponseHandler<String> responseHandler = ();
;
{
responseBody = httpclient.execute(httpget, responseHandler);
} (Exception e) {
e.printStackTrace();
responseBody = ;
} {
httpget.abort();
httpclient.getConnectionManager().shutdown();
}
responseBody;
}
{
(login()) {
getRedirectLocation();
(redirectLocation != ) {
System.out.println(getText(redirectLocation));
}
}
}
{
();
renRen.printText();
}
}
如下图所示,便获得了html文件,只要对这个html文件解析就行了。
有什么不明白的,请发邮件至1563178220@qq.com 合肥工业大学管理学院 钱洋