1背景

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

2目标

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

3整体流程图

4,使用到的工具和软件

VisualSVN Server:Windows下的SVN服务,使用非常简单和傻瓜,windows下个人开发强力推荐。更多可参考:

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的方式调用迅雷,就可以实现视频的自动下载,不过现在暂时没有这个需求。

java 图片爬虫_论坛图片爬虫的一种实现相关推荐

  1. python网络爬虫_爬图片

    python网络爬虫_爬图片 1.安装 Beautifulsoup4 #解析返回的html与json数据pip install Beautifulsoup4 使用 :           运行后输入要 ...

  2. Python_爬虫_网页图片下载_その日の紋

    Python_爬虫_网页图片下载_その日の紋 项目效果 项目需求 项目分析 URL分析 页面分析 项目实施 项目源码 项目效果 项目需求 目标页面:https://www.hanakomon.jp/c ...

  3. img绝对路径图片显示_使用python爬虫去风景图片网站批量下载图片

    使用python爬虫(requests,BeautifulSoup)去风景图片网站批量下载图片 1.写代码背景: 今天闲来无事,想弄点图片放到电脑,方便以后使用,故去百度查找一些风景图片网站,发现图片 ...

  4. python 图片地址_【Python爬虫】第四课(查询照片拍摄地址)

    首先,要能够查询到照片地址,查询的照片必须要开GPS拍,且上传时用原图-- 查询图片的exif信息,使用exifread包 import exifread img = exifread.process ...

  5. java captcha 验证码_验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. import java.awt.Color; import java.awt ...

  6. java炸弹人素材_炸弹人图片_炸弹人模板_炸弹人设计素材下载

    [{"id":658285,"url":"https://www.tooopen.com/view/658285.html","t ...

  7. java压缩源代码_压缩图片大小(Java源码)

    /** * * 直接指定压缩后的宽高: * @param oldFile * 要进行压缩的文件 * @param width * 压缩后的宽度 * @param height * 压缩后的高度 * @ ...

  8. java中反爬虫_反网络爬虫策略(转自Javaeye)

    [随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引 ...] 爬虫有好处也有坏处: 威胁主要是 ...

  9. java抓新闻_【图片】【抓取】Java获取各大网站新闻【java吧】_百度贴吧

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面上源码,用一小时做的,还有些bug package Getnews; import java.io.*; import java.net.*; imp ...

最新文章

  1. 10.30 linux和windows互传文件,用户配置文件和密码配置文件,用户组管理,用户管理...
  2. SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
  3. (转载)VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)
  4. .net访问PostgreSQL数据库发生“找不到函数名”的问题追踪
  5. information_schema.routines 学习
  6. [BUUCTF-pwn]——picoctf_2018_echo back
  7. 大道至简第七章第八章
  8. 双非计算机专业考研西安交通大学,2020双非一战计算机专硕初试403经验贴
  9. LOJ10121 与众不同
  10. mysql8.0版本的服务器名称_Linux服务器配置-VSFTP服务配置(六)
  11. 【Java】《基于Java的面向对象范式》学习笔记分享
  12. mysql explain insert_mysql explain详解
  13. qtableview选中第一行时表头会变色_超新颖的Word目录制作法,包你一看就会!【Word教程】...
  14. linux sub减法指令出错,sparc的指令的一些总结
  15. Python数据分析与处理(例题)
  16. Java 实现用户登录项目
  17. 人工智能与大数据时代-2020
  18. ksps什么单位_[转载]采样频率Hz 采样率KSPS或MSPS,两种单位的换算关系
  19. java List去除重复数据的五种方式
  20. iptables -j MARK --set-xmark 解析

热门文章

  1. 2022年春季学期期中考核
  2. Spark RDD常用算子使用总结
  3. 在CDH 6.3.1上安装HAWQ 2.4.0
  4. 当日竟涨6000万播放,三农新号靠这一个套路爆了
  5. 李国庆:签约孟羽童保底要400万
  6. K2 BPM PaaS签约福耀玻璃:面向微服务应用下的BPM应用平台
  7. error: unable to execute command: Segmentation fault: 11 解决办法
  8. 【皮皮哥资源网】问道 (二)
  9. android编译命令及.mk文件浅析
  10. ubuntu python serial实现串口数据收发