需求分析

今天遇到一个简单的需求,需要下载澳大利亚电力市场NEM日前市场的发电商报价数据(http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/),页面观感是这样的:

Ctrl + F 一下,看到一共有395个zip链接。于是就想着用python爬虫自动下载。这个网页很简单,没有验证码,甚至不需要登录,因此自动下载的python代码也很简单。

步骤

爬取链接主要是如下3步:

1. 第一步是爬取网页内容,保存在一个字符串content中

content的观感是这样的

从中可以看到链接是以'PUBLIC_NEXT_DAY_OFFER_ENERGY_(\d*)_(\d*).zip'的形式出现的,而且出现了两遍。

2. 第二步是构造正则表达式,从content中匹配下载链接

正则表达式构造为'(PUBLIC_NEXT_DAY_OFFER_ENERGY_(\d*)_(\d*).zip)',re.findall会返回一个三元tuple,分别是 (整个匹配到的字符串,第一个(\d*),第二个(\d*)). 由于上面提到了链接出现了两遍,所以可以用list转set来去重。

3. 第三步是遍历链接的set,下载链接

这一步就很trivial了,唯一要注意的是如果下载下来的文件所在的目录不存在,要提前作判断,建新目录。

结果

Done!

源代码

"""
Created on Tue Nov 20 09:50:26 2018@author: weiyx15Automated downloading all data links from
http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/"""
import urllib.request# url request
import re            # regular expression
import os            # dirs# parent url
url = 'http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/'# regular expression
pattern = '(PUBLIC_NEXT_DAY_OFFER_ENERGY_(\d*)_(\d*).zip)'# pull request
headers = {'User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
opener = urllib.request.build_opener()
opener.addheaders = [headers]
content = opener.open(url).read().decode('utf8')# match regex and drop repetition
raw_hrefs = re.findall(pattern, content, 0)
hset = set(raw_hrefs)# make directory
if not os.path.exists('./auto_download'):os.makedirs('auto_download')# download links
for href in hset:link = url + href[0]print(link)urllib.request.urlretrieve(link, os.path.join('./auto_download', href[0]))

python爬虫自动下载网页链接相关推荐

  1. Python 爬虫自动下载OpenAI Key Papers

    Spinning Up是OpenAI开源的面向初学者的深度强化学习资料,其中列出了105篇深度强化学习领域非常经典的文章, 见 Spinning Up: 博主使用Python爬虫自动爬取了所有文章,而 ...

  2. Python爬虫批量下载电影链接

    现在爬虫这么流行,学了点正则表达式的我就想着用(.*?)去实现一切偷懒的事.前两天看上了电影天堂这个网站,于是开始想:要不一次性爬取一页的视频下载链接试试.下面是这个网站的简图,接下来的任务就是把最右 ...

  3. python爬虫(自动下载图片)

    爬虫第一步下载第三方工具(requests包): win+R 输入cmd点击确定或回车 输入以下命令下载requests包: requests包是python爬虫常用的包 他的下载方式是 pip in ...

  4. mac os平台使用python爬虫自动下载巨潮网络文件

    环境配置 选择python+selenium+wget+Safari的环境来下载文件,本来期望使用phantomjs,但使用时点击出的链接网页为空白网页,无法下载文件. 使用Safari时遇到的错误: ...

  5. Python爬虫自动下载音乐(网易)

    songs.txt 带着地球去流浪 我在夜里偷看过一颗星星 蜉蝣 寄旅 不让我的眼泪陪我过夜 谁明浪子心 说谎的爱人 残酷月光 #coding:utf-8 import requests, sys, ...

  6. 2021-04-01裁判文书网数据python爬虫更新下载

    长期持续更新数据 2020-11-08裁判文书网数据python爬虫更新下载添加链接描述 截至3月已从数据库中下载1亿1200万条裁判文书数据,有需要数据的伙伴可以(。・∀・)ノ゙嗨前台QQ7900- ...

  7. 使用Python爬虫示例-自动下载网页音频文件

    使用Python爬虫示例-自动下载网页音频文件 使用库 目标网站 获取并解析网页源代码 访问下载链接 使用库 requests 用来发送http请求. BeautifulSoup 一个灵活又方便的网页 ...

  8. 抓取安居客二手房经纪人数据,python爬虫自动翻页

    为什么80%的码农都做不了架构师?>>>    和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到. 基于此能不能做网页的循环爬取呢. 能否判断页面读取 ...

  9. python之批量下载网页数据

    python之批量下载网页数据 要下载如下网页所示数据,一个一个点下载繁琐,我们用python代码来批量下载. python代码: import urllib.request # url reques ...

  10. 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...

最新文章

  1. java 判断二叉树是否平衡_剑指Offer - 判断二叉树是否是平衡二叉树
  2. IOS开发之——颜色设置
  3. BZOJ3916 [Baltic2014]friends
  4. python上机实验报告读取文件_Python程序设计实验八:文件
  5. 四分位数(Quartiles)、十分位数(Deciles)和百分位数(Percentiles
  6. R语言快速绘制多因素回归分析森林图(1)
  7. 原来这就是公文写作总结类模板和计划类模板
  8. 【Ghost Explore】镜像文件查看器
  9. 计算机课教师评价,教师课堂评价语集锦
  10. oracle查询备份存储路径,Oracle数据库备份和恢复(导出,导入)
  11. 强大的web打印插件--Lodop
  12. JavaScript 组合模式的实现
  13. 维基解密再爆料:CIA 2008年就开始监控iPhone了
  14. 入侵91网直到拿下服务器#并泄露150w+用户信息
  15. 20款前端特效动画及源码
  16. 闪存芯片NAND FLASH的封装
  17. 从零学习 InfiniBand-network架构(七) ——IB协议中数据如何传输
  18. 在IP网络中,P、PE、CE代表意思
  19. Unity3D 制作场景地图 插件
  20. 快手通过标签添加你什么意思_你知道快手标签是什么吗?钓号网告诉你

热门文章

  1. UML类图 自我学习 知识备份 自用 转载自最后的轻语_dd43
  2. IAM之Tivoli Identity Manager(二)
  3. EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
  4. Linux查看程序端口占用情况 netstat -apn | grep 8080
  5. ar ebs 销售订单关闭_ZARA母公司拟关闭1200家门店,拿什么拯救快时尚品牌?
  6. 视频怎么去水印教程 视频怎么去水印无痕迹
  7. Treap(二)——#10144. 「一本通 4.6 练习 1」宠物收养所
  8. 计算机系统(六):应用层(上篇)
  9. badboy录制脚本错误问题解决
  10. 关于ThinkPad T490s 风扇不转动问题