使用Jsoup批量下载code.google.com上的Cocos2dx学习DEMO
懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 )
网上关于cocos2dx游戏源码的例子太少了
搜了一圈后想去code.google.com上找找
还真不少
估计是用的很老的版本了
不过肯定有值得学习的地方
下了几个觉得手动下载太费劲了
于是乎 骨头动了邪念。。。
骨头最熟悉Java
所以用Java中Jsoup来抓取
这是正在运行中的机器人控制台:
Succeeded connecting to the Database! Query OK, count=895 List init OK. ============ Start checkout:895 ----------- Project 1 / 895:cocos2d-android svn checkout http://cocos2d-android.googlecode.com/svn/ /cygdrive/f/GGCodeSvn/ggcode_android_game/1.cocos2d-android Cost:21 sec.(ALL:21) ----------- Project 2 / 895:kwaak3 svn checkout http://kwaak3.googlecode.com/svn/ /cygdrive/f/GGCodeSvn/ggcode_android_game/2.kwaak3 Cost:25 sec.(ALL:46) ----------- Project 3 / 895:andors-trail svn checkout http://andors-trail.googlecode.com/svn/ /cygdrive/f/GGCodeSvn/ggcode_android_game/3.andors-trail Cost:118 sec.(ALL:165) ----------- Project 4 / 895:urho3d svn checkout http://urho3d.googlecode.com/svn/ /cygdrive/f/GGCodeSvn/ggcode_android_game/4.urho3d Cost:404 sec.(ALL:569) -----------
机器人正在努力下载着。。。
======================================
一步步来
1
首先看下code.google.com项目列表页:
https://code.google.com/hosting/search?q=cocos2dx&filter=0&mode=&start=10
参数就是cocos2dx 和 start=10 :关键字和分页
2
右键打开网页源代码:
<table> <tbody> <tr> <td style="padding-right: 5px;width:50px;"> <a href="/p/brook/"> <img style="max-width:50px;max-height:55px" src="https://ssl.gstatic.com/codesite/ph/images/defaultlogo.png" /> </a> </td> <td style="width:650px; padding-bottom:10px"> <a onmousedown="return clk(this, 8)" href="/p/brook/" style="font-size:medium">brook - brook</a> <img width="15" height="15" id="star_img" src="https://ssl.gstatic.com/codesite/ph/images/star_off.gif" style="cursor:pointer" onclick="starClick(this, ‘brook‘);" /> <br /> <span style="color:#676767"> Updated: Apr 17, 2012 </span><br /> cocos2dx box2d game<br /> <span class="labels"> <a href="/hosting/search?q=label:Game">Game</a> </span> </td> </tr> </tbody> </table>上面就是每个项目的html源码
Jsoup的使用
(1)使用程序拼接的url来下载网页,得到Document
(2)Elements es = doc.getElementsByTag("table"); 使用table标签来得到每个项目的table源码
(3)分析每个项目的html table源码,从中找出每个标签的规律,然后解析:
如下:
// img
tempE = e.select("img[style=max-width:50px;max-height:55px]")
.get(0);
img = tempE.attr("src");
if (img.startsWith("/p"))
img = GGCodeList.hostUrl + img;
// projectName,url
tempE = e.select("a[href^=/p/]").get(0);
projectName = tempE.attr("href");
projectName = projectName.substring(3, projectName.length() - 1);
url = GGCodeList.hostUrl + tempE.attr("href");
// title
title = e.select("a[onmousedown^=return clk]").get(0).text();
有用select选择的,有用attr属性选择器的,等等,关于Jsoup的用法需要多看几遍。
(4)使用Jdbc连接mysql数据库,将采集到的信息入库
// 驱动程序名 String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名scutcs String url = "jdbc:mysql://" + param.DB_IP + ":" + param.DB_PROT + "/" + param.DB_NAME + "?useUnicode=true&characterEncoding=UTF-8"; // MySQL配置时的用户名 String user = param.DB_USER; // MySQL配置时的密码 String password = param.DB_PASSWORD; try { // 加载驱动程序 Class.forName(driver); // 连续数据库 conn = DriverManager.getConnection(url, user, password);
骨头用的是wamp集成环境,简单的建个数据库然后往里写刚才抓取到的数据
cocos2dx相关大约60多个项目
(5)使用Java来运行cmd:
Runtime.getRuntime().exec("cmd.exe /c " + cmdStr);(6)使用cmd方式来checkout 刚才保存的svn地址
svn checkout http://beginnginandroidgames2.googlecode.com/svn/ /cygdrive/f/GGCodeSvn/ggcode_android_game/69.beginnginandroidgames2注意:本地地址要使用 cygdrive/f的方式来指定,这也是骨头瞎猜的,直接使用f:/这种格式老搞不定,突然想到前阵子使用cygwin编译cocos2dx时的指定方式。
cocos2dx的几十个项目下载的很顺利
但android game的几百个例子就比较麻烦
偶尔会有连接失败
应该是google服务器连接不稳定的原因
Demo到手
继续学习吧
// 有极少部分项目使用 git ,所以无法下载
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。