《Linux Shell脚本攻略》学习笔记-第五章

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

5.1  简介

借助HTTP协议所提供的功能以及命令行实用工具我们可以用脚本满足大量的web自动化需求。

5.2 web页面下载

wget是一个用于文件下载的命令行工具选项繁多且用法灵活。

下载单个文件或web页面

指定从多个URL处进行下载

我们可以通过选项-O指定输出文件名。

也可以通过-o来指定一个日志文件这样日志信息就不会被打印到stdout了。

选项-t可以指定在放弃下载之前尝试多少次

选项--quota或-Q可以指定最大下载配额对于存储空间有限的系统限制下载量是有必要的。

wget像爬虫一样以递归的方式遍历网页上所有的URL链接并逐个下载。

5.3 以纯文本形式下载页面

Lynx是一款基于命令行的web浏览器能够以纯文本形式下载web网页。

选项-dump能够以纯ASCII编码的形式下载web页面。

5.4 cURL入门

cURL默认会将下载文件输出到steout将进度信息输出到stderr。如果不想显示进度信息可以使用--silent。

选项-O指明将下载数据写入文件采用从URL中解析出的文件名。

选项-o可以指定输出文件名

如果需要在下载过程中显示形如#的进度条可以使用选项--progress

  1. 断点续传

cURL能够从特定的文件偏移处继续下载偏移量是以字节为单位的整数。如果只是想断点续传那么cURL不需要指定明确的字节偏移。

要是你希望cURL推断出正确的续传位置请使用选项-C -。

  1. 用cURL设置参照页字符串

web开发人员可以根据条件做出判断如果参照页是www.google.com那么就返回一个google页面否则返回其他页面

  1. 用cURL设置cookie

可以使用curl来指定并存储HTTP操作过程中使用到的cookie。cookie需要以name=value的形式来给出。多个cookie之间使用分号分隔。

选项--cookie-jar可以将cookie另存为文件

5.7 图片爬取器及下载工具

#!/bin/bash

#Filename: img_downloader.sh

if [ $# -ne 3 ];

then

 echo "Usage: $0 URL -d DIRECTORY"

 exit -1

fi

while [ $# -gt 0 ]

do

 case $1 in

 -d) shift; directory=$1; shift;;

 *) url=$1; shift;;

 esac

done

echo "URL: $url"

echo "DIR: $directory"

mkdir -p $directory;

baseurl=$(echo $url | egrep -o "https?://[a-z.\-]+")

echo Downloading $url

curl -s $url | egrep -o "<img src=[^>]*>" |

sed 's/<img src=\"\([^"]*\).*/\1/g' |

sed "s,^/,$baseurl/," > /tmp/$$.list

cd $directory;

while read filename;

do

 echo Downloading $filename

 curl -s -O "$filename" --silent

done < /tmp/$$.list

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux