+ -
当前位置:首页 → 问答吧 → IBM面试题,用JAVA抓取下整个网站

IBM面试题,用JAVA抓取下整个网站

时间:2009-07-29

来源:互联网

作业要求:
1.给定一个网站的URL,抓取下整个网站,包括网页、图片等等。
2.对该网站的所有对象进行一个统计,比如链接、图片、按钮等等分别有多少。

作者: shao0408   发布时间: 2009-07-29

同问!!!

是不是要解析该网站下的源代码哦?

作者: xlxyeyu   发布时间: 2009-07-29

这题给的不着调啊。加入我有两个页面,分别是http://xxxxx/a和http://xxxxx/b,这两个页面没有相互引用。这算一个网站的吧?你怎么从a知道b呢?

出题的弱智吧,限制条件都说不清楚

作者: eastoneking   发布时间: 2009-07-29

1.给定一个网站的URL,抓取下整个网站,包括网页、图片等等。 
2.对该网站的所有对象进行一个统计,比如链接、图片、按钮等等分别有多少。

分析网页的所有标签,内容、标题、图片、按钮 等等。大家帮忙用JAVA编写一下,小弟在线等待,感激不尽。

作者: shao0408   发布时间: 2009-07-29

我上次提交的 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class UrlContent {
public static String getHtmlSource(String url)

StringBuffer codeBuffer = null;
BufferedReader in=null;
try
{
URLConnection uc = new URL(url).openConnection();
// 读取url流内容
in = new BufferedReader(new InputStreamReader(uc
.getInputStream(), "gb2312"));
codeBuffer = new StringBuffer();
String tempCode = "";
// 把buffer内的值读取出来
while ((tempCode = in.readLine()) != null)
{
codeBuffer.append(tempCode).append("\n");
}
in.close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
 
return codeBuffer.toString();
}
public static void main(String[] args)
{
System.out.println(UrlContent.getHtmlSource("http://sports.163.com/zc/"));
 
}

}

反馈说我理解的不对,然后回复:
作业要求: 
1.给定一个网站的URL,抓取下整个网站,包括网页、图片等等。 
2.对该网站的所有对象进行一个统计,比如链接、图片、按钮等等分别有多少。

作者: shao0408   发布时间: 2009-07-29

不会  
等待牛人解答

作者: zl3450341   发布时间: 2009-07-29

一个站还是一个页啊,一个站有千八百页,那还有办法啊.?要从网页的URL取得另一页,另一页又有,.................
URL url;
HttpURLConnection conn=null;
try{
url=new URL("http://baike.baidu.com/view/2125344.htm");
conn=(HttpURLConnection)url.openConnection();
conn.setRequestProperty("Accept-Charset","utf-8");
conn.setRequestProperty("contentType","utf-8");

BufferedReader reader=new BufferedReader(new InputStreamReader(conn
.getInputStream(),"gbk"));
String downloadURL;
StringBuffer sb=new StringBuffer();
while((downloadURL=reader.readLine())!=null){
sb.append(downloadURL);
}

System.out.println(sb.toString());
这样就可以打印出这个网页了,至于里用正则如何替换,找出按钮,图片的,那还得再弄下.
}catch(Exception e){
}finally{
conn.disconnect();
}

作者: archko   发布时间: 2009-07-29

应该是所访问的当前页。。我不会,高手回答

作者: net_yuhai   发布时间: 2009-07-29

然后将每个网页所抓到的对象存起来。最后统计

作者: net_yuhai   发布时间: 2009-07-29

如何用正则如何替换,找出按钮,图片,内容,标题等等这才是关键,是知道正则怎么写。在线等待,感激不尽!

作者: shao0408   发布时间: 2009-07-29

顶。。。。等高手解答

作者: bea_java   发布时间: 2009-07-29

学习...

作者: ZhaoHuiZiXin   发布时间: 2009-07-29

一个页好说,一个站的话把你抓死了,还有外面的链接!

作者: yingkeda   发布时间: 2009-07-29

就一个网页就可以了,别的子网页可以不管。

作者: shao0408   发布时间: 2009-07-29

可使用Java的htmlpaser开源包

PostMethod method = null;
...... //设置method 的参数
//执行post方法
executeHttpMethod(client, method , 3000, new ArrayList());
//获取返回界面
BufferedInputStream f = new BufferedInputStream(method .getResponseBodyAsStream());
//保存下来即可
---------------------------
解析的话就搜索下载下来的文件,统计里面按钮等对应的标签 就可以了

作者: jackz_2007   发布时间: 2009-07-29

该回复于2009-08-12 23:14:49被版主删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#16楼 得分:0回复于:2009-07-29 11:48:49

作者: liujiaqiid   发布时间: 2009-07-29

嗯,是的。面试后留的作业。

作者: liujiaqiid   发布时间: 2009-07-29

典型的网页采集!

其实,有点类型搜索引擎!

作者: shao0408   发布时间: 2009-07-29

那个可以把按钮,图片,内容,标题等等正则写出来。

作者: jankrong   发布时间: 2009-07-29

支持万能的正则。

作者: shao0408   发布时间: 2009-07-29

爬虫的基本原理

作者: mianfeidog   发布时间: 2009-07-29

没人知道吗?汗

作者: ZangXT   发布时间: 2009-07-29

引用 21 楼 zangxt 的回复:
爬虫的基本原理


同意,偶也只是听说过.
另外有相关软件支持分析页面

作者: shao0408   发布时间: 2009-07-29

Reader reader = null;
BufferedReader br = null;
InputStream in = null;
String temp = "";
String text = "";
URLConnection urlConn = (HttpURLConnection)url.openConnection();
urlConn.setDoOutput(true);
in = urlConn.getInputStream();
in = new BufferedInputStream(in);
reader = new InputStreamReader(in);
br = new BufferedReader(new InputStreamReader(url.openStream(), "GBK"));
逐行读文件,写入text中
while ((temp = br.readLine()) != null) {
 text += temp;
 temp = null;
}
对text进行分析即可,例如超链接匹配<a等

作者: spirit_zyl   发布时间: 2009-07-29

请教大家按钮的正则怎么写。

作者: xiaoqiang111111   发布时间: 2009-07-29

按钮的正则怎么写

作者: shao0408   发布时间: 2009-07-30

顶个!

作者: shao0408   发布时间: 2009-07-30

汗,没有会吗?

作者: jinxinxin1314   发布时间: 2009-07-30

。。自己看开源爬虫源码去

作者: shao0408   发布时间: 2009-07-30

我觉得这所谓的“面试题”很可疑,
感觉像作业贴。

作者: scottxp   发布时间: 2009-07-30

er...

作者: jinxfei   发布时间: 2009-07-30

我觉得这里用正则不太合适吧,既然是要解析对象,干嘛不用XML呢?将读取出来的字符串转成一个XML文档,然后使用DOM进行递归的解析该XML文档得到所有的元素,这样行不通?
对于<html前面的字符我们可以过滤掉。

作者: tobeno2   发布时间: 2009-07-31

IBM 不会出这样的题目的 LZ不厚道 忽悠人

作者: shanhenvgui   发布时间: 2009-07-31

引用楼主 shao0408 的回复:
作业要求:
1.给定一个网站的URL,抓取下整个网站,包括网页、图片等等。
2.对该网站的所有对象进行一个统计,比如链接、图片、按钮等等分别有多少。


看看 作业要求 哈哈

作者: qgz0910   发布时间: 2009-07-31

这题目有什么意思吗?

作者: qgz0910   发布时间: 2009-07-31

用搜索机器人应该可以解决

作者: tree006   发布时间: 2009-07-31

收藏了

作者: wangxf_8341   发布时间: 2009-07-31

顶个!学习下

作者: upgrade_007   发布时间: 2009-07-31

网站深度的扫描:也就是生产一个网站基本层次架构(像是一棵树或森林?),然后按照这个结构一层层抓取资源,直到挖掘不下去(这个很可能会死循环的说啊,- -)。
只是我的想法而已,哈哈

作者: minglois   发布时间: 2009-07-31

热门下载

更多