论坛首页 Java企业应用论坛

定向爬虫 瓦力

浏览 34962 次
精华帖 (3) :: 良好帖 (3) :: 新手帖 (1) :: 隐藏帖 (4)
作者 正文
   发表时间:2009-06-17  
  简单看了一下代码, 基本上不通用

public void loadConfig(String path)
	{
		if (isNeedLoadConfig)
		{
			try
			{
				Map map = new HashMap();
				PropertiesFactory.loadPropertiesFile(map, path);
				String temp = new String();
				encoding = (String)map.get("encoding");
				res_list_beginPoint = (String)map.get("res_list_beginPoint");
				res_list_endPoint = (String)map.get("res_list_endPoint");
				regex_book = (String)map.get("regex_book");
				regex_book_debar = (String)map.get("regex_book_debar");
				temp = (String)map.get("book_id_index");
				if (temp != null)
					book_id_index = Integer.parseInt(temp);
				temp = (String)map.get("book_name_index");
				if (temp != null)
					book_name_index = Integer.parseInt(temp);
				temp = (String)map.get("book_author_index");
				if (temp != null)
					book_author_index = Integer.parseInt(temp);
				temp = (String)map.get("sleep_time");
				if (temp != null)
					sleep_time = Long.parseLong(temp);
				base_img_url = (String)map.get("base_img_url");
				base_file_url = (String)map.get("base_file_url");
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			isNeedLoadConfig = false;
		}
	}

	public List parseBooks(String url)
		throws IOException, InterruptedException
	{
		List list = new ArrayList();
		String s = new String();
		s = getOneHtml(url, encoding);
		List bs = getContentsByRegexAndDebar(regex_book, regex_book_debar, s);
		String bookId = new String();
		String name = new String();
		String author = new String();
		String txtUrl = new String();
		String imgUrl = new String();
		for (int i = 0; i < bs.size(); i++)
		{
			Thread.sleep(sleep_time);
			s = (String)bs.get(i);
			String g[] = s.split(",");
			bookId = g[book_id_index];
			name = g[book_name_index];
			author = g[book_author_index];
			txtUrl = (new StringBuilder(String.valueOf(base_file_url))).append(bookId).append(".txt").toString();
			imgUrl = (new StringBuilder(String.valueOf(base_img_url))).append(bookId).append(".jpg").toString();
			Book book = new Book();
			book.setBookId(bookId);
			book.setName(name);
			book.setAuthor(author);
			book.setTxtUrl(txtUrl);
			book.setImgUrl(imgUrl);
			list.add(book);
		}

		return list;
	}


如果我需要换一个怎么办??

  建议做成接口或读取xml信息来,存放到数据库或其他位置


建议去试试httpclient 
0 请登录后投票
   发表时间:2009-06-17  
还没明白这个是干嘛使的?
0 请登录后投票
   发表时间:2009-06-26  
   作为一个初级程序员的我,还没接触过网络爬虫之类的东西,看来是得要好好学学咯!
0 请登录后投票
   发表时间:2009-06-27  
所有针对特定的一两个网站的抓取都是简单的。
爬虫可以说是简单的,仅仅是下载网页。
也可以说是复杂的,怎么多线程,分布式的情况下多个爬虫怎么控制,负载均衡用什么策略,并发怎样,怎样才能不给对方服务器造成压力以避免对方封IP,怎么识别抓取回来的网页编码,海量URL怎么排重,怎么识别列表页面和领域页面(垂直爬虫所对应的领域)。
所以说楼主放出的这个,楼上有的朋友说的没错,玩票性质。楼主别见怪:p
还有,页面信息抽取不应该放在爬虫这里,爬虫应该追求快速,简单。应单独写一个模块或接口来抽取。
有感而发,楼主别怪。欢迎交流。
0 请登录后投票
   发表时间:2009-09-25  
geek87 写道
xiaoyu64814361 写道
geek87 写道
不知道,哪位有没有兴趣给加上,UI,做成一个产品,真正方便大家。。看小说,下载到手机,MP3,MP4上去

   哥们你这个东西还差得太远了···

来自越南的哥们,,自己没做过不要说别人嘛。。

      你怎么就知道我没有做过呢?  你这个东西非常简单又没有伪装成一个浏览器,一下就被新浪网站给发现直接out出去了,兄弟,又没有自动登陆的,更别说图片识别啥的了。你的这个东西只是个玩具而已啦,要做到非常牛的那种还需要几年的时间呢···
0 请登录后投票
   发表时间:2009-11-29  
xiaoyu64814361 写道
geek87 写道
xiaoyu64814361 写道
geek87 写道
不知道,哪位有没有兴趣给加上,UI,做成一个产品,真正方便大家。。看小说,下载到手机,MP3,MP4上去

   哥们你这个东西还差得太远了···

来自越南的哥们,,自己没做过不要说别人嘛。。

      你怎么就知道我没有做过呢?  你这个东西非常简单又没有伪装成一个浏览器,一下就被新浪网站给发现直接out出去了,兄弟,又没有自动登陆的,更别说图片识别啥的了。你的这个东西只是个玩具而已啦,要做到非常牛的那种还需要几年的时间呢···

不就是图片识别嘛。。AI,,呵呵。你说的没错。。我这里展示的就是个玩具。。真家伙没拿出来。。
0 请登录后投票
   发表时间:2009-12-01  
geek87 写道
xiaoyu64814361 写道
geek87 写道
xiaoyu64814361 写道
geek87 写道
不知道,哪位有没有兴趣给加上,UI,做成一个产品,真正方便大家。。看小说,下载到手机,MP3,MP4上去

   哥们你这个东西还差得太远了···

来自越南的哥们,,自己没做过不要说别人嘛。。

      你怎么就知道我没有做过呢?  你这个东西非常简单又没有伪装成一个浏览器,一下就被新浪网站给发现直接out出去了,兄弟,又没有自动登陆的,更别说图片识别啥的了。你的这个东西只是个玩具而已啦,要做到非常牛的那种还需要几年的时间呢···

不就是图片识别嘛。。AI,,呵呵。你说的没错。。我这里展示的就是个玩具。。真家伙没拿出来。。

如果要做成分布式的话,需要做什么样的修改呢? 搜索爬虫如果要真正有应用价值,至少要并行爬行才行哦,要不然效率和数据量都不足以满足企业和用户的需求
0 请登录后投票
   发表时间:2010-01-26  
估计你也没有通用的
0 请登录后投票
   发表时间:2010-02-09  
我最近也做了一个这样的爬虫,我说说我的一个做法,一起讨论
我是这样来实现的
用的第三方组件有:httpclient, htmlparser
用了数据库mysql,swing做的界面

1. 建立了一个数据表,大致结构是这样
-------------------------------
uid  ->  超链接ID
utitle  -> 超链接title
url -> 超链接地址
umd5 -> 超链接地址md5加密.32位

2. 抓取网页的时候从首页开始抓取,先提取网页上面的所有链接,写入数据库,在写入数据库的时候,比对数据库中有没有这条链接,如果没有就写入,有就放弃。

3. 根据这些链接,继续重复操作。

.....................
对于抓取的结果分析不是很满意,全文比配不好做,还有一个就是遇到生僻字会是乱码,记得把字库文件烤到jre里面去
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics