当前位置: 首页 > news >正文

Linux的shell脚本爬虫实战之图片爬取

一、爬虫原理

1、模拟计算机对服务器发起Request请求

2、接收服务器端的Response内容并解析、提取所需的信息

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;

我们把网址看成是一个.html的网页文件,本身网址内容就是存在这份文件里面的,有点像砸门小时候做黑板报时候的这个板块,那个板块这里涂啥那里抹点啥,他们显示音乐图片,通过应用网址链接来加载出来,此时我们做的就是获取该链接,获取该文字,下载下来存放某个文件夹分类。

我们先建立一个txt文件,里面存些图片地址等标签信息,然后分析获取。

   #!/bin/bash
echo "./pachong  file1.txt>>>>爬取文件中的网址图片信息下载"
#循环获取参数名称
for i  in $*
do
             echo $i
			#获取文件后缀
           txtname=`echo $i|grep ".txt"|awk -F "." '{print $2}'`
           echo $txtname
		   #判断参数是否存在
           if [ $# -lt 1  ]
           then
               echo "lost canshu"
               exit
		   #如果后缀是txt执行	   
           elif [ $txtname = "txt"     ]
           then 
                #核心获取图片下载地址,具体网站具体分析		   
                pic=`cat $1|grep "img class="|awk -F "src=" '{print $2}'|awk '{print $1}'|sed 's/"//g'`
               echo $pic
                curl -s -O  $pic
               echo "ok>>>"
               exit
           else 
               echo "end"
               exit
           fi
done

建立txt文件的内容如下

<img class="nature lazyload" src="https://p11.wnsimages.com/jingping/2022/09/03/7cb554a5-b28e-469a-9e10-769af352047d/001.jpg" data-original="https://p11.wnsimages.com/jingping/2022/09/03/7cb554a5-b28e-469a-9e10-769af352047d/001.jpg" alt="MiStar高清写真图VOL.303月音瞳" style="transition: all 1s ease 0s; opacity: 1; display: block;">

 

我们获取其中网址下载图片

 我们尝试打开看下这张图片

 

这个就完成今天的内容了,小伙伴们可以试试用linux的shell写一些更加复杂的批量程序,爬取更多有趣土图片

 

相关文章:

  • 浏览器缓存顺序
  • LeetCode高频题:子串权值定义为,最长有效括号子序列的长度,请你返回字符串s的所有子串权值的和是多少
  • 使用Python,dlib进行对象实时追踪
  • Pytorch量化感知训练
  • 设计模式——迭代器模式
  • STM32F407的时钟
  • Opencv形态学——腐蚀、膨胀、开运算与闭运算、梯度运算、礼帽、黑帽
  • [Django开源学习 1]django-vue-admin
  • JavaEE初阶:网络编程套接字
  • JAVA猎才学员成长心得分享
  • 2022年0903我的SpringBoot框架入门的第一个程序
  • 【高阶数据结构】并查集的实现(含压缩路径)及其应用-C++版本
  • Java——线程不安全的原因(图解)
  • [数据结构]~双向+循环链表从(0~1)
  • 【开学季】再见大一,你好大二 | 完成自己的未完成
  • android 一些 utils
  • co.js - 让异步代码同步化
  • CSS实用技巧干货
  • css属性的继承、初识值、计算值、当前值、应用值
  • Facebook AccountKit 接入的坑点
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript 一些 DOM 的知识点
  • java取消线程实例
  • Spark学习笔记之相关记录
  • spring cloud gateway 源码解析(4)跨域问题处理
  • tab.js分享及浏览器兼容性问题汇总
  • WePY 在小程序性能调优上做出的探究
  • 服务器之间,相同帐号,实现免密钥登录
  • 工程优化暨babel升级小记
  • 记录一下第一次使用npm
  • 模型微调
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (0)Nginx 功能特性
  • (02)vite环境变量配置
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (第61天)多租户架构(CDB/PDB)
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (循环依赖问题)学习spring的第九天
  • (一)UDP基本编程步骤
  • ***检测工具之RKHunter AIDE
  • .NET MVC第三章、三种传值方式
  • .net refrector
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 回调、接口回调、 委托
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @private @protected @public