java抓取图片_java 抓取网页的图片
//只能抓取一部分图片,像折800有些子路径的一行图片代码有好多个img,而且排列不规律,我的能力根本就没法截取下来
package test;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class getImageByUrl4 {
/**
* @param args
*/
private List imageUrl = new ArrayList();//用于存储图片的url
private int count = 0;//图片计数器
public static void main(String[] args) {
String netUrl = "http://www.zhe800.com";//要爬的网页
new getImageByUrl4().init(netUrl);
}
public void init(String netUrl){
getPage(netUrl);
while(imageUrl.size()!=0)
{
getImage(imageUrl.remove(0));
}
}
//获取网页信息line中的图片url并加入到集合中
public void getImageUrl(String line,String netUrl){
//三种正则表达式
//其他网站的图片,http开头如:src = "http://www.ecoc.com:8080/pic/jfjiejf.jpg
//String searchImgReg = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)=('|\")(http://([\\w-]+\\.)+[\\w-]+(:[0-9]+)*(/+[\\w-]+)*(/+[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))";
String searchImgReg = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")http(s)*://.{1,}.(jpg|JPG|png|PNG|gif|GIF)\"\\s";
//项目中的图片,绝对路径如:src = "/ecoc/lala/jj/ooellaie.jpg
//String searchImgReg2 = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")/*(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('\")";
String searchImgReg2 = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")/*(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))\"\\s";
try {
Pattern pat = Pattern.compile(searchImgReg);
Matcher matcher=pat.matcher(line);
String str =null;
while(matcher.find())
{
str = matcher.group();
String []sttr = str.split(" ");System.out.println(str);
for(int i = 0;i
String s = sttr[i];
Integer index_denghao = s.indexOf("=")+2;
imageUrl.add(s.substring(index_denghao,s.length()-1));
}
}
pat = Pattern.compile(searchImgReg2);
matcher=pat.matcher(line);
while(matcher.find())
{
str = matcher.group(); System.out.println(str);
String []sttr = str.split(" ");
for(int i = 0;i
String s = sttr[i];System.out.println(s);
Integer index_denghao = s.indexOf("=")+2;
Integer index_2 = netUrl.indexOf("/", 8);
if(index_2==-1)
index_2 = netUrl.length();
imageUrl.add(netUrl.substring(0, index_2)+"/"+s.substring(index_denghao,s.length()-1));
}
}
} catch (Exception e) {
}
}
//爬取网页中的信息。
public void getPage(String netUrl){
BufferedReader mybr = null;
try {
URL myurl = new URL(netUrl);
URLConnection myconn = myurl.openConnection();
InputStream myin = myconn.getInputStream();
mybr = new BufferedReader(new InputStreamReader(myin,"UTF-8"));
String line;
while((line = mybr.readLine())!= null)
{
getImageUrl(line,netUrl);//判断网页中的jpg图片
}
} catch (MalformedURLException e) {
System.out.println("getPage url异常");
} catch (IOException e) {
System.out.println("url连接异常");
e.printStackTrace();
}finally {
if( mybr != null)
{
try {
mybr.close();
} catch (IOException e) {
System.out.println("读入流关闭异常");
}
}
}
}
//下载该图片!
public void getImage(String imageUrl){
InputStream myin = null;
BufferedOutputStream myos = null;
try {
File file = new File("H:\\pic\\");
File[] files = file.listFiles();
for (File file2 : files) {
Integer fileName = Integer.valueOf(file2.getName().substring(0, file2.getName().indexOf(".")));
if(count
count = fileName;
}
}
URL myurl = new URL(imageUrl);
URLConnection myconn = myurl.openConnection();
myin = myconn.getInputStream();
myos = new BufferedOutputStream(new FileOutputStream("H:\\pic\\"+(++count)+".jpg"));
byte[] buff = new byte[1024];
int num = 0;
while((num = myin.read(buff))!= -1)
{
myos.write(buff, 0, num);
myos.flush();
}
} catch (MalformedURLException e) {
System.out.println("getImage url异常");
e.printStackTrace();
} catch (IOException e) {
System.out.println("下载图片url连接异常");
e.printStackTrace();
}
finally{
if( myin != null){
try {
myin.close();
} catch (IOException e) {
System.out.println("读入流关闭异常");
}
}
if( myos != null){
try {
myos.close();
} catch (IOException e) {
System.out.println("输出流关闭异常");
}
}
}
}
}
java抓取图片_java 抓取网页的图片相关推荐
- python抓取网站图片_python抓取图片示例 python抓取网页上图片
python抓取网页上图片 这个错误时是什么意思 下面是代码 import re import urllib.request imp正则表达式匹配的url有错误 for x in add: print ...
- 【期末课设】python爬虫基础与可视化,使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。
1.大作业的内容 本要求使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载. 2.案例需求 要求采用虚拟浏览器等动态爬虫技术,完 ...
- python批处理实现爬取网页静态图片文件重命名图片统一修改大小等功能
按照特定字符(此处选为字符'j')分割文档成多个小文档 def main():with open("dir/origin.txt","r") as f:temp ...
- Python3爬取网页中图片(2021-01-04 14:06:02),附上完整代码
Python爬取网页中图片,附上完整代码 文章目录 Python爬取网页中图片,附上完整代码 概述 完整代码 概述 批量爬取数据,请遵循robots协议及相关网站协议及说明. 本代码仅供有需要爬取网页 ...
- java抓取图片_Java实现的爬虫抓取图片并保存操作示例
本文实例讲述了Java实现的爬虫抓取图片并保存操作.分享给大家供大家参考,具体如下: 这是我参考了网上一些资料写的第一个java爬虫程序 本来是想获取煎蛋网无聊图的图片,但是网络返回码一直是503,所 ...
- 循环爬取图片_Java爬取简单的网页内容和图片
Java爬取简单的网页内容和图片 根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码. 针对得到的html代码,通过使用正则表达式即可得到我们想要的内容. ...
- python爬取图片-Python爬取网页中的图片(搜狗图片)详解
前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...
- 网络爬虫之Scrapy实战四:爬取网页下载图片
在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...
- 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)
参考文章:https://www.cnblogs.com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只 ...
最新文章
- 人工智能在能源行业的5个应用
- Android Studio添加文件注释头模板?
- C语言实现Trie字典树 (附完整源码)
- mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)
- 虚拟机下Linux网络配置
- MySQL 8.0 ROLE管理
- WingPro 8 for Mac(专业Python IDE开发工具)
- cordova android项目自定义插件及使用(二)
- 精通Android【Android移动开发制胜宝典】
- numpy系列之拷贝和视图
- 企业微信网页应用开发 - 开发环境搭建
- GitHub账户注册流程及常见问题解析
- 7 php 内存泄漏_PHP内存泄漏分析定位
- android系统相机的使用、及解决拍照闪退的问题
- android 心跳包的分析
- IPsec IKE第一阶段主模式和野蛮模式
- 游戏辅助制作核心--植物大战僵尸逆向之自动捡取阳光(二)
- 06.奇特的一生评语
- win10开机有东西一闪而过_win10系统开机cmd窗口一闪而过的解决方法
- HashMap的key为Integer时为什么有序
热门文章
- (三)数据结构之“栈”
- 解决Failed to load resource: net::ERR_CONNECTION_TIMED_OUT问题
- vue项目和react项目中禁止eslint
- 页面加载完成之后,开始显示内容
- java解析静态AIS原始数据
- Redis的入门(一)安装,设置密码
- Caffe2:段错误(核心 已转储)
- On Tutorial with Caffe--a Hands DIY DL for Vision
- warning delete ·· (prettier/prettier)
- leetCode刷题(使用链表做加法)