powershell 配合aria2实现简单的图片爬取

powershell 配合aria2实现简单的图片爬取

01 前言

现如今,提到爬虫,令人不得不提到Python,确实简单,也强大,到处都可以找到教程。故而今天换换口味,用powershell来实现,配合aria2的强大下载功能,也很nice

02 正文

测试环境:Windows 11

1. 确定目标网站

这一步通过搜索引擎,很容易就可以找到感兴趣的网站,此处略。

2. 确定有订阅源地址

假设目标网站为:https://abc.com,然后在地址栏后面加:/feed,回车访问(即完整的路径为:https://abc.com/feed)。
如果能够正常访问,且有内容(XML格式),那可以,比如大概长这样:
xml

3. 开始处理

为了方便使用,分为两个部分:powershell脚本bat脚本,那么通过修改bat脚本参数,可以双击直接运行。

(1)首先应该有aria2,【下载】好并解压。如果本机已经有,就不必下载了。

(2)powershell脚本代码



<#
    xml解析图片地址,调用aria2下载

    by hokis

    2024-05-29 19:36

#>

[CmdletBinding()]
Param
(
    # 域名,一般以/结尾,如:https://abc.com/
    [Parameter(Mandatory=$true,
                ValueFromPipelineByPropertyName=$true,
                Position=0)]
    [string]
    $server,

    #保存路径,如果为空,则放在 我的/图片 下
    [string]
    $savePath = '',

    #aria2.exe所在目录
    [Parameter(Mandatory=$true)]
    [string]
    $aria2Path
)


function Invoke-DownWithAria2
{
   
    [CmdletBinding()]
    Param
    (
        # 文件列表,格式:ArrayList 里面放一个2个元素的数组,第一个是URL,第二个是文件名
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        [System.Collections.ArrayList]
        $fileList,

        #referer
        [string]
        $refer,

        [string]
        $newSavePath,

        #aria2路径
        [string]
        $aria2Path = ''
    )

    Begin
    {
   

    }
    Process
    {
   
                #配置模板
        $conf = @'

## 日志
log-level=error
#log=/PATH/.aria2/aria2.log

#控制台日志
console-log-level=error

## 文件保存相关 ##
 
# 文件保存目录
#dir=
{0}
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 断点续传
continue=true
 
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=falloc
 
## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10
# 整体下载速度限制, 运行时可修改, 默认:0(不限制)
max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0(不限制)
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0(不限制)
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0(不限制)
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true

# 客户端伪装
user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
#referer=
{1}

# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
# 建议同max-connection-per-server设置为相同值
split=20
 
# 读取下载任务
#input-file=
{2}

'@
        
        if(-not $fileList -or $fileList.Count -lt 1){
   
            Write-Warning 'file should not be null'
            return
        }

        $tempFName = [System.IO.Path]::GetRandomFileName()
        $tempDownFile = Join-Path -Path $env:TEMP -ChildPath $tempFName

        Write-Verbose ('down file :' + $tempDownFile<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值