`

论坛图片爬虫的一种实现

阅读更多

 

1背景

经常上贴图的论坛(Discuz!),每次打开帖子的时候,由于帖子的图片太多,每次都要等不少时间才能看到所有的图片,比较麻烦;同时经常会打开看过的帖子。为了解决这个问题,写了个小爬虫,定期把最新的帖子中的图片下载到本地。

 

2目标

自动登录、智能发现为抓取的帖子、智能提取图片URL、多线程下载到本地。

 

3整体流程图

 

 

 4,使用到的工具和软件

VisualSVN ServerWindows 下的SVN服务,使用非常简单和傻瓜,windows下个人开发强力推荐。更多可参考:http://www.jb51.net/article/17365.htm 

Paros web安全漏洞扫描工具。可拦截所有的HTTP的请求和相应。这里用来分析登录时提交的数据。

Firebug, mvn这个不多说了,谁用谁知道。

 

 

5,使用到的框架

http client 4.1。 用来发起Http get post 请求。本来用的是3.1版本,结果多线程下载的时候,底层出现了线程死锁问题。看到官网也强力推荐升级,然后升级解决了这个问题。

 

 

6,关键代码和步骤

 Cookie的手动处理

httpclient没有自动把登录的cookie信息放到请求的消息头里,需要手工处理。

 

	HttpGet httpget = new HttpGet(url);
	if (isNeedLogin) {
		httpget.setHeader("Cookie", getCookieString());
	}
		
	public static String getCookieString() {
		StringBuffer stringBuffer = new StringBuffer();
		for (Cookie item : logoncookies) {
			stringBuffer.append(item.toString());
			stringBuffer.append(";");
		}
		if (stringBuffer.length() > 1) {
			return stringBuffer.substring(0, stringBuffer.length() - 1)
					.toString();
		}
		return stringBuffer.toString();
	}

 

 

Http client多线程设置:

 

		ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager();
		cm.setMaxTotal(50);

		// 多线程的
		httpClient = new DefaultHttpClient(cm);

 

 

 

图片下载代码:

 

 

	/**
	 * 下载图片到本地
	 * 
	 * @return 是否发生网络异常
	 */
	public static boolean downloadPic(String url, String path) {
		// GetMethod get = new GetMethod(url);
		HttpGet httpget = new HttpGet(url);
		try {
			HttpResponse resp = httpClient.execute(httpget);
			File storeFile = new File(path);
			// 得到网络资源的字节数组,并写入文件
			FileOutputStream out = new FileOutputStream(storeFile);
			InputStream in = resp.getEntity().getContent();
			byte[] buffer = new byte[1024];
			int count = -1;
			while ((count = in.read(buffer)) != -1) {
				out.write(buffer, 0, count);
			}
			out.flush();
			out.close();
		} catch (Exception e) {
			log.error("线程" + Thread.currentThread().getName()
					+ "号. 下载图片异常. URL为" + url, e);

			return false;
		}
		return true;
	}

 

 

mvn创建java工程的命令:

 

 

 

mvn archetype:create -DgroupId=com.mike -DartifactId=picgetter -DpackageName=org.mike

 

 

 

7,展望

BT视频的自动下载,最近迅雷开放了API,通过JNI的方式调用迅雷,就可以实现视频的自动下载,不过现在暂时没有这个需求。

  • 大小: 46.1 KB
分享到:
评论
4 楼 sesame 2011-05-19  
melanlife 写道
这个,对于常上的网站一般的浏览器都会有图片缓存吧? 另外,一次性把大量的图片都加载说明这个网站也有问题吧,不都是lazy load么? 即到了显示的时候再加载


浏览器缓存是对已经访问过的内容,和我这边的需求不太一样;网站确实没有作延时加载,不过由于图片较多,每张200k,50张的话就是10M,即使作延时加载也会因为网速的问题打开网页很慢。所以我作了这么个小工具,在网络空闲的时候,就把图片下载到本地,看起来就很方便了
3 楼 melanlife 2011-05-18  
这个,对于常上的网站一般的浏览器都会有图片缓存吧? 另外,一次性把大量的图片都加载说明这个网站也有问题吧,不都是lazy load么? 即到了显示的时候再加载
2 楼 greatghoul 2011-05-18  
我也写过从论坛爬图片的网站,不过是从XX网站,为了避过眼花瞭乱的广告。
不过就没有像lz这样,把经验心得都写出来了,我的上不了台面呀。
1 楼 genggeng 2011-05-17  
不错!
有想法就好......

相关推荐

    bing图片爬虫_爬虫_

    描述中的“简单实现了bing上的图片爬取”意味着这个项目采用了一种简洁的代码实现,能够自动化抓取Bing搜索引擎上指定关键词的图片。这个过程通常包括以下几个步骤: 1. **发送请求**:首先,我们需要向Bing的图片...

    一个图片爬虫和音乐爬虫

    在IT领域,爬虫是一种非常重要的技术,尤其对于数据挖掘和信息分析来说。"一个图片爬虫和音乐爬虫"的项目,正如标题所示,涵盖了两种不同类型的网络爬虫,分别用于抓取互联网上的图像资源和音乐文件。下面将详细解释...

    网站图片爬虫_python爬虫_

    网站图片爬虫是一种用于自动化抓取互联网上特定网站图片的程序,通常由Python语言实现,因为Python提供了丰富的库和工具,使得爬虫开发更为便捷。本项目中的"网站图片爬虫"显然是一款基于Python的爬虫,其目标是下载...

    vc 网络图片爬虫小程序

    【vc 网络图片爬虫小程序】是一个利用VC++编程语言实现的工具,用于从互联网上抓取和下载图片。这个小程序的核心功能是自动遍历网页,提取出其中的图片链接,并将这些图片保存到本地。下面我们将详细讨论网络图片...

    Python爬虫-基于Python实现的图片爬虫项目-支持爬取Lofter图片.zip

    Python爬虫技术是一种广泛应用于数据抓取和网络信息挖掘的工具,尤其在处理网页图片的下载和收集方面表现得尤为突出。本项目是基于Python语言实现的一个图片爬虫,专门针对Lofter平台进行图片的抓取。Lofter是一款...

    图片爬虫程序

    图片爬虫程序是一种用于自动化获取网络上特定网页中图片资源的工具。在互联网上,大量信息以图片形式存在,如产品图片、新闻配图、社交媒体图像等。通过编写图片爬虫,我们可以批量下载这些图片,用于数据分析、图像...

    多网站图片爬虫框架

    在IT领域,图片爬虫是一种专门用于自动从互联网上抓取图片的程序。这种技术常被用于数据分析、搜索引擎优化、图像处理或者个人项目,例如创建图像集合或进行市场研究。"多网站图片爬虫框架"是这样一种工具,它能够...

    python3 网站图片爬虫

    Python3 网站图片爬虫是一种利用编程技术抓取并下载互联网上的图片资源到本地计算机的方法。在Python中,实现这一目标主要依赖于几个关键的库和概念,包括requests、BeautifulSoup、re正则表达式以及文件操作等。...

    java图片爬虫

    【Java图片爬虫】是一种利用Java编程语言实现的网络爬虫技术,专门用于抓取互联网上的图片资源。在这个项目中,开发人员使用了名为crawl4j的开源库,这是一个为Java设计的简单易用的Web爬虫框架。crawl4j允许开发者...

    图片爬虫

    标题中的“图片爬虫”指的是一个能够自动化抓取互联网上图片的程序或工具。在IT领域,图片爬虫常用于数据分析、图像处理、网站备份、搜索引擎优化等多种场景。这种技术结合了网络爬虫和图像处理的知识,涉及到的主要...

    小小图片爬虫

    1. **HTTP协议**:HTTP是互联网上应用最为广泛的一种网络协议,图片爬虫首先需要理解HTTP请求和响应的基本概念,以构建网络请求并获取服务器的响应。 2. **httpclient库**:Apache的httpclient是一个强大的Java库,...

    WinForm实现网络爬虫

    在IT领域,网络爬虫是一种自动化程序,用于从互联网上抓取大量数据,通常用于数据分析、搜索引擎索引或监控特定网站的变化。在这个项目中,我们将探讨如何使用WinForm这一Windows应用程序开发框架来实现一个简单的...

    python实现网络图片爬虫

    在Python编程领域,网络图片爬虫是一种常见的应用,它能够自动地从互联网上抓取图片资源。本项目的核心是利用Python实现一个高效的图片爬虫,其中`spider.py`是主程序,`testSpider.py`则用于进行单元测试,确保爬虫...

    英雄联盟LOL英雄图片和皮肤图片爬虫代码

    在IT行业中,网络爬虫是一种常见的技术,用于自动地抓取网页信息。在这个特定的案例中,"英雄联盟LOL英雄图片和皮肤图片爬虫代码"是一个使用Python编写的程序,目的是从互联网上抓取与《英雄联盟》(League of ...

    java爬虫爬取百度图片

    Java中可以选择Jsoup库,它提供了一种简洁的方式来解析和操作HTML。通过选择器(如CSS选择器)定位到包含图片链接的元素,然后提取出href属性。 3. **图片下载**:获取到图片URL后,我们需要下载图片。可以使用Java...

    百度图片爬虫应用程序.zip

    网络爬虫,又称网页蜘蛛或网络机器人,是一种自动浏览互联网并抓取网页信息的程序。在Python编程语言中,网络爬虫的实现非常便捷,因为Python拥有强大的库支持,如requests用于发送HTTP请求,BeautifulSoup用于解析...

    推特 图片 视频 爬虫;一键下载.zip

    爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...

    Python 网络图片爬虫 源码 可扩展

    Python网络图片爬虫是一种用于自动化抓取互联网上图片资源的工具,它可以帮助开发者或爱好者高效地获取大量图片数据。在本案例中,我们有一个名为"PyImageSpider.py"的源码文件,它提供了实现这一功能的基本框架。接...

    一种新型网络爬虫的设计与实现

    - **发起请求**:网络爬虫首先选择一个起始网页(通常是已知的种子URL),向服务器发送HTTP请求。 - **接收响应**:服务器接收到请求后返回HTML内容。 - **解析HTML**:爬虫解析响应的HTML,查找页面内的链接,...

Global site tag (gtag.js) - Google Analytics