不写一行代码,利用常用工具和软件批量下载URL资源
有时候会遇到这种情况:想从某个网站下载一批东西,目标URL是比较规整的,而且结构都一样(仅某些字段不同)。但又懒得开IDE专门写个脚本去弄,今天就和大家分享一下,如何利用手边常用的软件和工具,不用写一行代码或者脚本,就能完成这项工作。
需要的软件工具有:正则表达式工具、WGET(或者CURL)、EXCEL、记事本。
你看,并没有用到任何开发语言和脚本语言嘛。
一、获取下载索引页代码
首先需要分析一下下载索引页URL的规律,其点两页就能发现,仅有最后的PAGE参数内容不同,单调递增。然后再找到最后一页的页面(本例里是71)。

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

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

最终结果:

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

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

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

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

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

二、分析、提取并构造最终下载目标列表
有了索引页的代码,我们下一步的工作就是将最终下载目标从索引页代码里批量提取出来。
通过对比实际链接和索引页代码的内容,我发现最终下载目标的URL里的关键部分已经包含在索引页代码里,提取出来之后前后补全链接其他部分即可。

这个工具是我自己写的哈,用正则表达式处理文本用的。以后有空会做一个命令行版本。
这里有一个小技巧,就是提取关键数据的时候前后可以留一点尾巴,补全链接的时候可以用。在本例里我就留了前面的冒号和后面的斜杠。补全链接的时候分别替换成链接前缀和链接后缀就OK了。注意一定不能留前后相同的,也不能和关键内容重复。如果实际情况不允许的话,可以继续用上文介绍的EXCEL表格的方式批量补全链接。
由于所有的索引页代码结构完全一样,所以用相同的正则就能全部提取出来。我开发的这个工具有一个批量提取的功能,我相信其他正则表达式工具也都有类似的功能。





(为了演示,没有拿全部的71个文件)
现在打开刚刚生成的列表文件,将预留的”尾巴“替换成真实URL的前后部分。


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

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

搞定,收工
不写一行代码,利用常用工具和软件批量下载URL资源的更多相关文章
- 推荐一款最强Python自动化神器!不用写一行代码!
搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...
- 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制
一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...
- 快速开发框架(FDMS)新增1000个对外接口都不须要手写一行代码
一个大型系统难免会跟其它系统有数据交换,这里就要提供数据接口给外部系统. 曾经在一家智能终端设备的公司上班.那段时间的主要工作就是写接口.接口须要与手机.手持设备.系统管理软件等进行数据交换.总结了一 ...
- 如何利用efetch从NCBI中批量下载数据?
目录 找序列 下序列 假设我要从NCBI中下载全部水稻的mRNA序列,如何实施? 找序列 第一步,肯定是找到相关序列. 我从ncbi taxonomy进入,搜索oryza.因为要搜索mRNA核酸序列, ...
- 微软最强 Python 自动化工具开源了!不用写一行代码!
1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...
- django2.0再写一行代码
基础 @LTS长期支持 @django-admin startproject xxx python manage.py runserver python manage.py startapp xxx ...
- NGUI 不写一行代码实现翻拍效果
正面UI添加一个TweenRotation组件,取消掉Active状态 ,To参数改成0,90,0) 背面UI添加一个TweenRotation组件,取消掉Active状态, From参数改成0,27 ...
- 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!
瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...
- 一行代码让你的项目轻松使用Dapr
介绍 Dapr简化了云原生开发,让开发可以把焦点放在应用的业务逻辑上,从而让代码简单.可移植,那作为一个.Net开发者,我们也希望项目可以快速用上dapr,那究竟应该如何做呢? Dapr提出了Side ...
随机推荐
- Scala入门系列(四):Map & Tuple
Map 创建Map // 创建一个不可变的Map scala> val ages = Map("Leo" -> 30, "Sparks" -> ...
- Scala入门系列(五):面向对象之类
定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...
- PHP 八种基本的数据类型小结
四种标量类型: boolean (布尔型) integer (整型) float (浮点型, 也称作 double) string (字符串) 两种复合类型: array (数组) object (对 ...
- 写一段PHP代码,确保多个进程同时写入同一个文件成功(腾讯)
- 【liferay】1、使用alloy-UI发送ajax请求
1.首先liferay要发送ajax请求,那么就需要在jsp中定义resourceURL <portlet:resourceURL var="workDeal" id=&qu ...
- POJ 1661 Help Jimmy(DP,注意边界)
Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9399 Accepted: 3025 Descri ...
- Android之——ListView优化
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47209253 作为client.其最基本的任务就是最直观的和用户交互.从serve ...
- 浅析node.js
大家好,今天来给大家讨论node.js这个东西,说起这个东西啊,可能大家已经很熟悉了,因为现在市场上运用的越来越广泛,毕竟它的优点还是有目共睹的! 那么,什么是node.js呢?官方给出了这样的定义: ...
- F04 我的投资策略
我的投资理念:价值投资和右侧趋势投资.我的目标年化收益率: 15-25%我的投资时间:3-5年我的投资品种:股票 + EFT基金 买卖时间点的纪律(买入,卖出的时间原则)股票MA20为界限,高于则持有 ...
- Java数组的一些使用方法及堆栈存储
数组 用于存储一组同一数据类型数据的容器 数组会对放入其中的数据自动编号,编号是从0开始的---下标 定义格式 数据类型[] 数组名 = new 数据类型[数组的大小];---可以先声明再初始化 in ...