View Mode: Normal | Article List
Category: Java | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | >

Java Spider/抓取or采集网页内容

[ 2006-05-31 21:10:18 | Author: zhenhua ]
如果机房够多,可以写个循环,采集Google、Yahoo、baidu
不需要Google的API,也没有1000次限制,这个抓取就和实际开启浏览器访问一样。如果频繁访问google也有罪,那就没话说了
另外Google和Yahoo的编码方式有些复杂,Google采用Unicode的通用编码,中文的处理方式和百度不同,百度可以轻松抓取到相应的结果,如果要获得google的关键词结果数,则要和它的编解码方式匹配才可以,百度的就没这个问题。

只是原理上实现,对网页编码没有认真处理,所以抓取一些页面时会出现乱码的情况。
 public StringBuffer getResponse(String address) {
 StringBuffer list = new StringBuffer();

 try {
 url = new URL(address);
 urlconn = (java.net.HttpURLConnection) url.openConnection();
...

Read More...

Google查询请求参数

[ 2006-05-31 20:29:50 | Author: zhenhua ]
Google查询请求参数
变量
描述
q $query (您的请求) 用于搜索的字符串
Start 从0 到结果总数 指定搜索的结果显示开始于某一个点。实际上这个就是google用来分页的参数了。google没有page这个参数
num/maxResults 1 -- 100 每页显示的结果数
filter O or 1 是否显示过滤相似结果,1为是,0为否。如果为1,google将会让你在搜索结果的最下面选择将省略的结果纳入搜索范围后再重新搜索
restrict "限制代码".例子:
...

Read More...

Google 的中文编码方式

[ 2006-05-31 20:13:49 | Author: zhenhua ]
 /**
 * Google 中文URL参数处理
 * @param s
 * @return
 */
 public static String getUtf8Str(String s) {
 String ret = null;
 try {
 ret = java.net.URLEncoder.encode(s, "utf-8");
 } catch (UnsupportedEncodingException ex) {
 }
 return ret;
 }

 /**
 * 对UTF-8进行中文解码
 * @param s
 * @return
 */
 public static String getStrUtf8(String s) {
 String ret = null;
 try {
 ret = java.net.URLDecoder.decode(s, "utf-8");
...

Read More...

转码

[ 2006-05-31 18:09:19 | Author: zhenhua ]
Java 转码
 public static String convert(String str) {
 String tmp;
 StringBuffer sb = new StringBuffer(1000);
 char c;
 int i, j;
 sb.setLength(0);
 for (i = 0; i < str.length(); i++) {
 c = str.charAt(i);
 if (c > 255) {
 sb.append("\\u");
 j = (c >>> 8);
 tmp = Integer.toHexString(j);
 if (tmp.length() == 1)
 sb.append("0");
 sb.append(tmp);
...

Read More...

获取Google/Yahoo/Baidu搜索结果数

[ 2006-05-30 21:24:57 | Author: zhenhua ]
输入一个关键字,能立刻得到Google、Yahoo或baidu或其他一切搜索引擎的搜索结果数.
见:http://zhenhua.org/article.asp?id=343

正则 匹配介于两者之间

[ 2006-05-30 21:22:28 | Author: zhenhua ]
1.包含开始和结束字符串
开始字符串[\\W*\\w*]*结束字符串

2.不包含开始和结束字符串,只取中间的内容
(?<=开始字符串).*?(?=结束字符串)

3.
 String str = "[img]http://xxxxx.com/xxxx1.jpg[/img]" +
 "[img]http://xxxxx.com/xxxx2.jpg [/img]" +
 "[img]http://xxxxx.com/xxxx3.jpg [/img]" +
 "[img]http://xxxxx.com/xxxx4.jpg [/img]" +
 "[img]http://xxxxx.com/xxxx5.jpg [/img]" +
 "[img]http://xxxxx.com/xxxx6.jpg [/img]";
...

Read More...

You should know

[ 2006-05-26 21:03:18 | Author: zhenhua ]
来源[CSDN]

问题一:我声明了什么!

String s = "Hello world!";

许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:

String string = s;

我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

问题二:"=="和equals方法究竟有什么区别?

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
...

Read More...