python爬虫自动下载网页链接
需求分析
今天遇到一个简单的需求,需要下载澳大利亚电力市场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爬虫自动下载网页链接相关推荐
- Python 爬虫自动下载OpenAI Key Papers
Spinning Up是OpenAI开源的面向初学者的深度强化学习资料,其中列出了105篇深度强化学习领域非常经典的文章, 见 Spinning Up: 博主使用Python爬虫自动爬取了所有文章,而 ...
- Python爬虫批量下载电影链接
现在爬虫这么流行,学了点正则表达式的我就想着用(.*?)去实现一切偷懒的事.前两天看上了电影天堂这个网站,于是开始想:要不一次性爬取一页的视频下载链接试试.下面是这个网站的简图,接下来的任务就是把最右 ...
- python爬虫(自动下载图片)
爬虫第一步下载第三方工具(requests包): win+R 输入cmd点击确定或回车 输入以下命令下载requests包: requests包是python爬虫常用的包 他的下载方式是 pip in ...
- mac os平台使用python爬虫自动下载巨潮网络文件
环境配置 选择python+selenium+wget+Safari的环境来下载文件,本来期望使用phantomjs,但使用时点击出的链接网页为空白网页,无法下载文件. 使用Safari时遇到的错误: ...
- Python爬虫自动下载音乐(网易)
songs.txt 带着地球去流浪 我在夜里偷看过一颗星星 蜉蝣 寄旅 不让我的眼泪陪我过夜 谁明浪子心 说谎的爱人 残酷月光 #coding:utf-8 import requests, sys, ...
- 2021-04-01裁判文书网数据python爬虫更新下载
长期持续更新数据 2020-11-08裁判文书网数据python爬虫更新下载添加链接描述 截至3月已从数据库中下载1亿1200万条裁判文书数据,有需要数据的伙伴可以(。・∀・)ノ゙嗨前台QQ7900- ...
- 使用Python爬虫示例-自动下载网页音频文件
使用Python爬虫示例-自动下载网页音频文件 使用库 目标网站 获取并解析网页源代码 访问下载链接 使用库 requests 用来发送http请求. BeautifulSoup 一个灵活又方便的网页 ...
- 抓取安居客二手房经纪人数据,python爬虫自动翻页
为什么80%的码农都做不了架构师?>>> 和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到. 基于此能不能做网页的循环爬取呢. 能否判断页面读取 ...
- python之批量下载网页数据
python之批量下载网页数据 要下载如下网页所示数据,一个一个点下载繁琐,我们用python代码来批量下载. python代码: import urllib.request # url reques ...
- 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...
最新文章
- java 判断二叉树是否平衡_剑指Offer - 判断二叉树是否是平衡二叉树
- IOS开发之——颜色设置
- BZOJ3916 [Baltic2014]friends
- python上机实验报告读取文件_Python程序设计实验八:文件
- 四分位数(Quartiles)、十分位数(Deciles)和百分位数(Percentiles
- R语言快速绘制多因素回归分析森林图(1)
- 原来这就是公文写作总结类模板和计划类模板
- 【Ghost Explore】镜像文件查看器
- 计算机课教师评价,教师课堂评价语集锦
- oracle查询备份存储路径,Oracle数据库备份和恢复(导出,导入)
- 强大的web打印插件--Lodop
- JavaScript 组合模式的实现
- 维基解密再爆料:CIA 2008年就开始监控iPhone了
- 入侵91网直到拿下服务器#并泄露150w+用户信息
- 20款前端特效动画及源码
- 闪存芯片NAND FLASH的封装
- 从零学习 InfiniBand-network架构(七) ——IB协议中数据如何传输
- 在IP网络中,P、PE、CE代表意思
- Unity3D 制作场景地图 插件
- 快手通过标签添加你什么意思_你知道快手标签是什么吗?钓号网告诉你
热门文章
- UML类图 自我学习 知识备份 自用 转载自最后的轻语_dd43
- IAM之Tivoli Identity Manager(二)
- EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
- Linux查看程序端口占用情况 netstat -apn | grep 8080
- ar ebs 销售订单关闭_ZARA母公司拟关闭1200家门店,拿什么拯救快时尚品牌?
- 视频怎么去水印教程 视频怎么去水印无痕迹
- Treap(二)——#10144. 「一本通 4.6 练习 1」宠物收养所
- 计算机系统(六):应用层(上篇)
- badboy录制脚本错误问题解决
- 关于ThinkPad T490s 风扇不转动问题