首页
社区
课程
招聘
[讨论]比较有意思的技术性问题,请大家过来看一看!!
发表于: 2013-4-10 17:28 8925

[讨论]比较有意思的技术性问题,请大家过来看一看!!

2013-4-10 17:28
8925

如何获取此网站的数据,如上图红圈所示。

网站地址:http://dotazj.uuu9.com/

大家可以使用各种方法。

此贴仅限技术性讨论!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我抓包来提交了一些POST数据,还是不行

以下是代码

public static void main(String[] args) throws Exception {
        URL url = new URL("http://dotazj.uuu9.com/");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        String name = URLEncoder.encode("官人可以不", "utf-8");
        System.out.println(name);
        connection
                .getOutputStream()
                .write(
                        ("__VIEWSTATE=篇幅限制&__EVENTVALIDATION=篇幅限制&name="
                                + name +"&Button2=篇幅限制&ladderRating=0&jushu=0&win=0&p_win=0&mvp=0&resv6=0&resv5=0&resv7=0&resv8=0&resv9=1&resv10=4"
                                ).getBytes());
        connection.getOutputStream().flush();
        connection.getOutputStream().close();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                connection.getInputStream(), "utf-8"));
        String str = null;
        while ((str = reader.readLine()) != null) {
            System.out.println(str);
        }
        reader.close();
    }
2013-4-10 17:32
0
雪    币: 281
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如上图红圈所示 ? 是哪里
2013-4-10 17:39
0
雪    币: 2937
活跃值: (2763)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
__VIEWSTATE与__EVENTVALIDATION两个值不是固定的。
每次打开页面都不一样。得先提取出来。

然后再POST
上传的附件:
2013-4-10 17:55
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=HOWMP;1164067]__VIEWSTATE与__EVENTVALIDATION两个值不是固定的。
每次打开页面都不一样。得先提取出来。

然后再POST[/QUOTE]

我就是先提取出来的啊。。麻烦大神给写段代码吧?
2013-4-11 13:42
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
战绩一览中的数据 和 鉴定结果中的数据
2013-4-11 13:43
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
package org.rscis.test;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.rscis.utils.regex.RegexOpt;
import org.rscis.utils.rsHttpClient.RsHttpClient;
import org.rscis.utils.rsHttpClient.RsHttpClientException;

public class TesthDotazjUuu9Com {
	public static void main(String[] args) throws ClientProtocolException, IOException, RsHttpClientException {
		RsHttpClient client = new RsHttpClient();
		String firstPage = client.getMethod("http://dotazj.uuu9.com/");
//		System.out.println(firstPage);
		
		//<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTU0OTE0ODA1NmRkGbqyrPsb5Jhf4T2qFtAiS6Dy7Ko=" />
		String __VIEWSTATE = RegexOpt.getString(firstPage, "id=\"__VIEWSTATE\" value=\"(.+?)\"", 1);
		//<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWDQKYkpXoDQL7uPQdArursYYIApOixrIJArqP2b0HAp2ilpYPAtO31N4HAp3hgG0CgZLB4wgCgpLB4wgCgJLB4wgC9pHB4wgC/pGB5AiIAnMm7r/a4sYrcbm2WhKuK6/JWg==" />
		String __EVENTVALIDATION = RegexOpt.getString(firstPage, "id=\"__EVENTVALIDATION\" value=\"(.+?)\"", 1);
		String name = "官人可以不";
		String postData = "__VIEWSTATE=" + __VIEWSTATE + "&__EVENTVALIDATION=" + __EVENTVALIDATION + "&name=" + name + "&Button2=鉴定玩家&ladderRating=&jushu=&win=&p_win=&mvp=&resv6=&resv5=&resv7=&resv9=&resv10=";
		
		String resultPage = client.postMethod("http://dotazj.uuu9.com/", postData);
		
//		<p>
//        天梯积分:</p>
//    <input name="ladderRating" type="text" id="ladderRating" class="text2" value="1429" /></li>
		String 天梯积分 = RegexOpt.getString(resultPage, "id=\"ladderRating\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        局数:</p>
//    <input name="jushu" type="text" id="jushu" class="text2" value="1728" /></li>
		String 局数 = RegexOpt.getString(resultPage, "id=\"jushu\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        胜场:</p>
//    <input name="win" type="text" id="win" class="text2" value="876" /></li>
		String 胜场 = RegexOpt.getString(resultPage, "id=\"win\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        胜率:</p>
//    <input name="p_win" type="text" id="p_win" class="text2" value="50.69%" /></li>
		String 胜率 = RegexOpt.getString(resultPage, "id=\"p_win\" class=\"text2\" value=\"([\\d\\.%]+)\"", 1);
//<li>
//    <p>
//        MVP:</p>
//    <input name="mvp" type="text" id="mvp" class="text2" value="192" /></li>
		String MVP = RegexOpt.getString(resultPage, "id=\"mvp\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        破:</p>
//    <input name="resv6" type="text" id="resv6" class="text2" value="209" /></li>
		String 破 = RegexOpt.getString(resultPage, "id=\"resv6\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        富:</p>
//    <input name="resv5" type="text" id="resv5" class="text2" value="206" /></li>
		String 富 = RegexOpt.getString(resultPage, "id=\"resv5\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        军:</p>
//    <input name="resv7" type="text" id="resv7" class="text2" value="186" /></li>
		String 军 = RegexOpt.getString(resultPage, "id=\"resv7\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        补:</p>
//    <input name="resv9" type="text" id="resv9" class="text2" value="243" /></li>
		String 补 = RegexOpt.getString(resultPage, "id=\"resv9\" class=\"text2\" value=\"(\\d+)\"", 1);
//<li>
//    <p>
//        魂:</p>
//    <input name="resv10" type="text" id="resv10" class="text2" value="201" /></li>
		String 魂 = RegexOpt.getString(resultPage, "id=\"resv10\" class=\"text2\" value=\"(\\d+)\"", 1);
		
		String printResult = "天梯积分\t	: " + 天梯积分 + "\n" +
							 "局数		: " + 局数 + "\n" +
							 "胜场 		: " + 胜场 + "\n" +
							 "胜率 		: " + 胜率 + "\n" +
							 "MVP 		: " + MVP + "\n" +
							 "破 		: " + 破 + "\n" +
							 "富 		: " + 富 + "\n" +
							 "军 		: " + 军 + "\n" +
							 "补 		: " + 补 + "\n" +
							 "魂 		: " + 魂;
		System.out.println(printResult);
	}
}




天梯积分 : 1429
局数 : 1728
胜场 : 876
胜率 : 50.69%
MVP : 192
破 : 209
富 : 206
军 : 186
补 : 243
魂 : 201
2013-4-11 14:48
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
[ ATTACH ] Selection_013.png [ /ATTACH ]

Eclipse的效果挺好,贴上来排版有点乱~~~~~~~~
上传的附件:
2013-4-11 14:51
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
org.rscis.utils.regex.RegexOpt 这是那个jar包 亲??
2013-4-11 15:51
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
亲 是否可以提供下 以下类:
import org.rscis.utils.regex.RegexOpt;
import org.rscis.utils.rsHttpClient.RsHttpClient;
import org.rscis.utils.rsHttpClient.RsHttpClientException;
2013-4-11 16:07
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
各种搜索真心找不到这些类
2013-4-11 16:23
0
雪    币: 335
活跃值: (313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
以上类应该是,他自己扩展私人类库。
他已经说原理告诉你的了,用java的正则把
__VIEWSTATE与__EVENTVALIDATION先提取value值。再进行第二次提交要想查找的数据。如果是shell脚本,一个sed或awk一个wget or curl同时很容易实现。当然用perl就更easy!
2013-4-11 16:59
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
这都是我自己分装的类,你当然搜索不到
RegexOpt是对正则表达式操作的分装,一眼就能看出做了什么操作啊,自己还原下好了啊
当成伪码看吧

RsHttpClient是对HttpClient 4.x的封装,你可以找找HttpClient的教程,直接给你代码学不到啥的
你这个抓取是很基本的,没什么难度的
2013-4-11 17:00
0
雪    币: 20
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
非常感谢。。
2013-4-11 17:36
0
雪    币: 298
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢Peter牛,看到这里明白了。
2013-4-11 17:53
0
游客
登录 | 注册 方可回帖
返回
//