有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同)。但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一行代码或者脚本,就能完成这项工作。

需要的软件工具有:正则表达式工具、WGET(或者CURL)、EXCEL、记事本。

你看,并没有用到任何开发语言和脚本语言嘛。

一、获取下载索引页代码

首先需要分析一下下载索引页URL的规律,其点两页就能发现,仅有最后的PAGE参数内容不同,单调递增。然后再找到最后一页的页面(本例里是71)。

现在把前面固定的部分提取出来(直到末尾的”page=“),复制到EXCEL里的第一列,然后把参数值放到第二列。

然后对第二列向下进行填充,规律是单调递增,直到最末页码。然后把左边复制成同样数量。

最终结果:

然后把这个表格全部复制到记事本(notepad.exe)里。

字段(原本的表格列)之间会被\t(tab)分隔,只要替换成空字符(删除)就行了。

这样我们就得到了完整的索引页下载列表。如果变量部分在链接的中间也不怕,反正URL参数顺序是可以调换的,挪到最后即可。实在不行也可以在表格后面补一列来补全。人要学会举一反三嘛。

把它丢给wget去搞定就行了。

这样我们就得到了包含了最终下载目标的所有的索引页的网页内容。

二、分析、提取并构造最终下载目标列表

有了索引页的代码,我们下一步的工作就是将最终下载目标从索引页代码里批量提取出来。

通过对比实际链接和索引页代码的内容,我发现最终下载目标的URL里的关键部分已经包含在索引页代码里,提取出来之后前后补全链接其他部分即可。

这个工具是我自己写的哈,用正则表达式处理文本用的。以后有空会做一个命令行版本。

这里有一个小技巧,就是提取关键数据的时候前后可以留一点尾巴,补全链接的时候可以用。在本例里我就留了前面的冒号和后面的斜杠。补全链接的时候分别替换成链接前缀和链接后缀就OK了。注意一定不能留前后相同的,也不能和关键内容重复。如果实际情况不允许的话,可以继续用上文介绍的EXCEL表格的方式批量补全链接。

由于所有的索引页代码结构完全一样,所以用相同的正则就能全部提取出来。我开发的这个工具有一个批量提取的功能,我相信其他正则表达式工具也都有类似的功能。

(为了演示,没有拿全部的71个文件)

现在打开刚刚生成的列表文件,将预留的”尾巴“替换成真实URL的前后部分。

这样,我们就得到了干净的下载列表。

然后你就可以把这个列表拿到一个网速比较好的机器上,继续交给wget就OK了。

搞定,收工

不写一行代码,利用常用工具和软件批量下载URL资源的更多相关文章

  1. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...

  2. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

  3. 快速开发框架(FDMS)新增1000个对外接口都不须要手写一行代码

    一个大型系统难免会跟其它系统有数据交换,这里就要提供数据接口给外部系统. 曾经在一家智能终端设备的公司上班.那段时间的主要工作就是写接口.接口须要与手机.手持设备.系统管理软件等进行数据交换.总结了一 ...

  4. 如何利用efetch从NCBI中批量下载数据?

    目录 找序列 下序列 假设我要从NCBI中下载全部水稻的mRNA序列,如何实施? 找序列 第一步,肯定是找到相关序列. 我从ncbi taxonomy进入,搜索oryza.因为要搜索mRNA核酸序列, ...

  5. 微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  6. django2.0再写一行代码

    基础 @LTS长期支持 @django-admin startproject xxx python manage.py runserver python manage.py startapp xxx ...

  7. NGUI 不写一行代码实现翻拍效果

    正面UI添加一个TweenRotation组件,取消掉Active状态 ,To参数改成0,90,0) 背面UI添加一个TweenRotation组件,取消掉Active状态, From参数改成0,27 ...

  8. 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!

    瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...

  9. 一行代码让你的项目轻松使用Dapr

    介绍 Dapr简化了云原生开发,让开发可以把焦点放在应用的业务逻辑上,从而让代码简单.可移植,那作为一个.Net开发者,我们也希望项目可以快速用上dapr,那究竟应该如何做呢? Dapr提出了Side ...

随机推荐

  1. cookie大小

    一.浏览器允许每个域名所包含的cookie数: Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie. Firef ...

  2. 【NOIP2014提高组】解方程

    https://www.luogu.org/problem/show?pid=2312 对于30%的数据,n<=2,暴力带入试解.对于50%的数据,ai很大,结合高精乘法和霍纳算法暴力代入试解. ...

  3. require.js模块化写法

    模块化 模块就是实现特定功能的一组方法.只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. 下述两种写法等价 exports 对象是当前模块的导出对象,用于导出模块公有方法和属性. ...

  4. AspNet Core Api Restful 实现微服务之旅 (一)

    (一)了解微服务(二)搭建VS项目框架  (三)创建AspNet Core Api VS2017 安装包   链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 创 ...

  5. C++ queue deque

    queue queue 队,一种先进先出的数据结构,c++ stl里也叫容器适配器,它是以deque 或list为基础的一种数据结构 queue的相关操作 queue<int deque< ...

  6. RandomAccessFile详解

    此类的实例支持对随机访问文件的读取和写入.随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组.存在指向该隐含数组的光标或索引,称为文件指针:输入操作从文件指针开始读取字节,并随着对字节的 ...

  7. json篇

    QQ:1187362408 欢迎技术交流和学习 json篇(json): TODO: 1,json:json是什么( JSON(JavaScript Object Notation) 是一种轻量级的数 ...

  8. 《Qt on Android核心编程》介绍

    <Qt on Android核心编程>最终尘埃落定.付梓印刷了. 2014-11-02更新:china-pub的预售链接出来了.折扣非常低哦. 封面 看看封面的效果吧,历经几版,最终就成了 ...

  9. 使用storyboard设置button边框属性(颜色,宽度,圆角)

    通常使用Category时.仅仅能加入方法,不可加入属性.可是在使用Storyboard时我们可能会使用到keyPath,这里设置的key都须要是所设置视图的属性值.而且类型有所限制. 比如:我如今有 ...

  10. minicom在虚拟机(linux)安装配置过程

    1. minicom须要ncurses库的支持.否则安装会有问题. A. 下载ncurses.我选择是ncurses-5.6.tar.gz 下载地址:http://directory.fsf.org/ ...