#!/bin/bash

read -p "请输入要爬取的页面数(默认为10):" page_num
page_num=${page_num:-}
echo $page_num
read -p "请输入要保存的目录名称(默认为img):" save_path_name
save_path_name=${save_page_name:-"/opt/img"}
[ ! -d $save_path_name ]&&mkdir $save_path_name
echo $save_path_name for i in `seq $page_num`
do base_url="http://www.doutula.com/article/list/?page=${i}"
#循环N次,将需要下载的img的url保存到imgurl.txt
echo "当前处理第$i个url" curl $base_url | egrep -o '(<img)()*(.*)(data-original=")(.*)"(.*)(>)' | egrep -o '(data-original=")(.*)"' | sed -r 's/" data-backup=.*?//g;s/data-original="//g' >> $save_path_name/imgurl.txt done #计数
file_count=; #一行一行遍历刚刚保存url的imgurl.txt文件
#sort imgurl.txt | uniq 代表去除重复行
for line in `sort $save_path_name/imgurl.txt | uniq`
do
#%s 从1970年1月1日00::00到目前经历的秒数 ,%N当前时间的纳秒数据 , $(date +%s%N)即秒数 + 纳秒,保证文件名唯一
#curl -o 表示把输出写到该文件中,即指定文件名并写到文件
type=${line##*.}
file_name=$(date +%s%N)".$type"
file_count=`expr $file_count + `
echo "当前下载第$file_count个图片"
curl -o $save_path_name/$file_name $line
done
[root@L shells]# vim doutu.sh
[root@L shells]# cat doutu.sh
#!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num
page_num=${page_num:-}
echo $page_num
read -p "请输入要保存的目录名称(默认为img):" save_path_name
save_path_name=${save_page_name:-"/opt/img"}
[ ! -d $save_path_name ]&&mkdir $save_path_name
echo $save_path_name for i in `seq $page_num`
do base_url="http://www.doutula.com/article/list/?page=${i}"
#循环N次,将需要下载的img的url保存到imgurl.txt
echo "当前处理第$i个url" curl $base_url | egrep -o '(<img)()*(.*)(data-original=")(.*)"(.*)(>)' | egrep -o '(data-original=")(.*)"' | sed -r 's/" data-backup=.*?//g;s/data-original="//g' >> $save_path_name/imgurl.txt done #计数
file_count=; #一行一行遍历刚刚保存url的imgurl.txt文件
#sort imgurl.txt | uniq 代表去除重复行
for line in `sort $save_path_name/imgurl.txt | uniq`
do
#%s 从1970年1月1日00::00到目前经历的秒数 ,%N当前时间的纳秒数据 , $(date +%s%N)即秒数 + 纳秒,保证文件名唯一
#curl -o 表示把输出写到该文件中,即指定文件名并写到文件
type=${line##*.}
file_name=$(date +%s%N)".$type"
file_count=`expr $file_count + `
echo "当前下载第$file_count个图片"
curl -o $save_path_name/$file_name $line
done

shell爬取斗图网的更多相关文章

  1. 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求

    6.21自我总结 一.爬取斗图网 1.摘要 使用xpath匹配规则查找对应信息文件 将请求伪装成浏览器 Referer 防跨域请求 2.爬取代码 #导入模块 import requests #爬取网址 ...

  2. python爬取斗图网中的 “最新套图”和“最新表情”

    1.分析斗图网 斗图网地址:http://www.doutula.com 网站的顶部有这两个部分: 先分析“最新套图” 发现地址栏变成了这个链接,我们在点击第二页 可见,每一页的地址栏只有后面的pag ...

  3. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

  4. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...

  5. Python爬取 斗图表情,让你成为斗图大佬

    话不多说,上结果(只爬了10页内容) 上代码:(可直接运行)   用到Xpath #encoding:utf-8 # __author__ = 'donghao' # __time__ = 2018/ ...

  6. 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充

    今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...

  7. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  8. Python协程爬取妹子图(内有福利,你懂得~)

    项目说明: 1.项目介绍   本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...

  9. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

随机推荐

  1. zabbix监控mysql主从同步和延迟

    https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...

  2. IDEA配置之tomcat相关配置

    1. tomcat起服务时, 日志乱码 -server -XX:PermSize=512M -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8 设置tomcat参数

  3. 【IDEA插件】—— 代码量统计工具Statistic

    1.下载 1.打开idea设置界面,选择 plugins标签 2.搜索“Statistic”插件,点击 install 3.重启IDEA 2.使用 1.菜单栏中找到view 2.在下层目录中找到Sta ...

  4. mingw-w64 gcc std::thread 行为异常

    我用的 ming-w64 gcc 是通过 MSYS2 安装的,包名是 mingw-w64-x86_64-gcc,版本 9.2.0-2. 我发现 std::thread 行为异常. int main() ...

  5. (四)Spring 的 bean 管理(注解方式)

    目录 前言 使用 aop 的配置文件写法 开启注解扫描 利用注解创建对象 注解方式注入属性 配置文件和注解混合使用 前言 注解可以写在 类.方法.属性 上 : 使用 注解,需要导入 aop 包: 使用 ...

  6. S02_CH15_ AXI_OLED 实验

    S02_CH15_ AXI_OLED 实验 在上一个例子中,主要是以软件功能为主,采用了软件模拟SPI时序进行控制OLED.这样做的好处是灵活,但是牺牲了效率.本章采用的方式是让SPI驱动由Veril ...

  7. scala中ClassOf、asInstenceOf、isInstanceOf三个预定义方法分析

    classOf.isInstanceOf.asInstanceOf三个预定义方法分析 Scala的三个预定义(predefined)方法,我们经常用到:它们用来感觉很简单, 但是里面还是隐藏了一些细节 ...

  8. 安装laravel-ide-helper

    前言 使用laravel作为PHP开发框架的朋友都知道,laravel提供的门面操作都对于PHPStorm的代码提示和方法跳转都不是很友好.然而没有关系,今天介绍一个组件帮助到我们.就是!就是!就是! ...

  9. Flask+gevent-websocket模块实现websocket

    后端代码: from flask import Flask,request from geventwebsocket.handler import WebSocketHandler from geve ...

  10. Delphi 执行线程对象