网页视频抓取脚本( java通过url读取远程数据并保持到本地的方法介绍)

优采云 发布时间: 2021-10-14 14:22

  网页视频抓取脚本(

java通过url读取远程数据并保持到本地的方法介绍)

  Java通过url读取远程数据并保存到本地实例代码

  更新时间:2018-07-03 10:21:26 作者:狐筱筱生

  本文通过示例代码向大家介绍java中通过url读取远程数据并保存在本地的方法。本文为您介绍的很详细,具有一定的参考价值。有需要的朋友可以参考

  前几天,老太太突然告诉我,她在京东上买了一本电子书。购买后如何查询,只能在网上或自带阅读器查看,很不方便,让我想想办法。

  我开始想知道如何。一开始,我直接用Acrobat Reader打开,发现只有一个目录,没有别的,全在页面上。我认为可能可以为正确的内容添加掩码,而我只能使用“密钥”。人们可以过滤它。想要破解别人的编辑器,短时间内肯定不行。网上很多人也想到了用自动化脚本自动给官方读者截图,但是我发现截图并不是逐页截图的。,这是非常令人生畏的。最后,只能通过在线阅读此行来找到方法。

  这个方法和网友的差不多。它保存为图片以及如何使用pdf工具将其制作为pdf。

  网上看了一下,发现文档真的不错,每页一张图,已经为你准备好了,但是每次只更新当前页面前后几张,其他的都会清零。这时,思路就出来了:

  跳转到第 n 页并拉取刷新后的图像路径。将图像路径保存到缓存中(我使用的是 redis)。通过网络工具,将缓存中的所有图片地址下载到本地。这一次,通过pdf处理图像将图像转换为pdf

  步骤 1 到 3 需要重复,这可以使用自动工具和脚本来实现。

  第四步是写一个控制器,最简单的java接口就可以了。

  第 5 步可以通过直接在线服务来实现。

  为什么要先在下载中缓存?这涉及到效率和图像去重和过滤的问题,因为每次调整后得到的图像可能是重复的。如果它们存储在redis映射中,它们将被自动删除;这也是为了避免在获取图片路径时,下载过程意外退出以及任务无法正常完成等问题。然后脚本获取路径并将其保存到自己的服务器。唯一的问题可能是跨域问题。原来还是少了几张图片,所以可以体会到使用缓存的好处,可以直接通过代码验证缺失的图片,不需要检查jpg文件,那几位文件,最后手动完成。

  这种方式得到的图片唯一的缺陷就是有“京东阅读”字样,而且图片的分辨率不是很高,字体也显得有些邋遢。如果您有强迫症或追求高品质,请使用官方阅读器。个人比较清楚,是文档,不是图片!!!

  下面是java通过URL获取网络数据并保存到本地的代码。

  

public class HttpURLConnectionUtil {

// 通过get请求得到读取器响应数据的数据流

public static InputStream getInputStreamByGet(String url) {

try {

HttpURLConnection conn = (HttpURLConnection) new URL(url)

.openConnection();

conn.setReadTimeout(5000);

conn.setConnectTimeout(5000);

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {

InputStream inputStream = conn.getInputStream();

return inputStream;

}

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

// 将服务器响应的数据流存到本地文件

public static void saveData(InputStream is, File file) {

try (BufferedInputStream bis = new BufferedInputStream(is);

BufferedOutputStream bos = new BufferedOutputStream(

new FileOutputStream(file));) {

byte[] buffer = new byte[1024];

int len = -1;

while ((len = bis.read(buffer)) != -1) {

bos.write(buffer, 0, len);

bos.flush();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

  转移:

  

Set imgNumber = (Set) redisTemplate.opsForHash().keys(MAP_KEY);

imgNumber.stream().forEach(e->{

String url = (String) redisTemplate.opsForHash().get(MAP_KEY,e);

String fileName = e+".jpg";

File file = new File("E:\\pdfͼƬ\\", fileName);

InputStream inputStream = HttpURLConnectionUtil

.getInputStreamByGet(url);

HttpURLConnectionUtil.saveData(inputStream, file);

});

  总结

  以上是java通过url读取远程数据并保存在本地的示例代码。我希望它会对你有所帮助。如果有什么问题,请给我留言,小编会及时回复您。非常感谢您对脚本之家网站的支持!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线