首页 新闻 会员 周边 捐助

请教一下关于抓取新浪微博手机版用户页面数据的问题

0
悬赏园豆:20 [待解决问题]
最近,由于实验设计需要,需要大量抓取微博中的数据,
在采取了一些网友的建议下,我试着写了一个Java程序配合HTMLparser去抓取新浪微博手机版页面的数据。
但是,在抓取用户页面中的数据时,意外遇到了需要本人先登录后才能访问他人页面的问题。

为了解决登录问题,我查取了大量资料。似乎HttpClient能配合实现自动登录。
但是,新浪微博手机版的登录框却是一个很特别的登录设计,
请看代码高亮部分。

<form action="login_submit.php?rand=1615712919&amp;backURL=http%3A%2F%2Fm.weibo.com%2F&amp;backTitle=%D0%C2%C0%CB%CE%A2%B2%A9&amp;vt=4&amp;revalid=2&amp;ns=1" method="post">
<div class="mg">
手机号/电子邮箱/会员帐号:<br/><input type="text" name="mobile" size="30" value=""/>
<br/>
密码:(<a href="login.php?backURL=http%3A%2F%2Fm.weibo.com%2F&amp;backTitle=%D0%C2%C0%CB%CE%A2%B2%A9&amp;vt=4&amp;revalid=2&amp;ns=1&amp;pt=1">使用明文密码</a>)<br/>
<input type="password" name="password_7069" size="30" value=""/><br/>
<input type="checkbox" name="remember" checked="checked"/>记住登录状态,需支持并打开手机的cookie功能。<br/>
<input type="hidden" name="backURL" value="http://m.weibo.com/"/>
<input type="hidden" name="backTitle" value="新浪微博"/>
<input type="hidden" name="backURL" value="http://m.weibo.com/"/>
<input type="hidden" name="vk" value="7069_6c29_2038971687"/>
<input type="submit" name="submit" value="登录"/><br/>

这里,账号的输入名很普通,是个固定的名称;但是,密码输入框就不一样了,它的名称是个动态生成的,而且每次访问后得到的结果都不一样。

请问在解决这个问题上该怎样处理的?下面的问号是怎样解决的?谢谢!

   HttpClient client = new HttpClient();
PostMethod post_method = new PostMethod("http://3g.sina.com.cn/prog/wapsite/sso/login.php?ns=1&revalid=2&backURL=http%3A%2F%2Fm.weibo.com%2F&backTitle=%D0%C2%C0%CB%CE%A2%B2%A9&vt=");

NameValuePair[] data = {
new NameValuePair("mobile", "....@sina.com"),
new NameValuePair("????", "password"),
};

post_method.setRequestBody(data);




その調調的主页 その調調 | 初学一级 | 园豆:180
提问于:2012-03-18 19:01
< >
分享
所有回答(3)
0

你应该先去requst登录页面, 拿到response里面的form, 然后把密码密码填好, 然后再post给login.php吧. 

...那段包含代码是你copy过来的吧. 貌似encoding设的不对. 

光阴四溅 | 园豆:215 (菜鸟二级) | 2012-03-18 22:56

恩,呵呵,谢谢了。代码中的encoding确实不对,Copy的时候弄错了,上面的那个应该是request的url而不是post过去的。

request登录页面后确实能拿到form里的内容,但是post的时候, password的input名字又改变了。

不知道是不是我哪里弄错了,能贴上您的Code吗?我确实对request和response这块还不是太理解。

支持(0) 反对(0) その調調 | 园豆:180 (初学一级) | 2012-03-20 01:37
0

获取密码框,虽然名字会动态生成,但是控件名和控件类型组合是唯一的啊(这个表单中只有一个密码输入框),直接获取input的type为password的输入框不行吗?

文海 | 园豆:202 (菜鸟二级) | 2012-03-20 13:11
0

LZ能加下我的QQ吗 454651583 我遇到些问题

God-like | 园豆:202 (菜鸟二级) | 2012-06-13 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册