又是下网页数据,之前用Python写过一个,下载的是国家统计局网站上的信息,地址为:http://blog.csdn.net/liminlu0314/article/details/7300240。

这次依旧是,不过下载的是Australian Bureau of Statistics的数据,都是xls的表格,网址为:http://www.abs.gov.au。网页打开左边有棵树目录,里面记录的澳大利亚的行政区名,然后后面有个get data 的链接,不过这棵树是动态加载的,客户端没法获取到全部的内容,像我这种从来没有做过网络编程的,脸html都看不懂的人,更不懂ajax了。笨人有笨方法,于是就把树全部点开,然后把网页的源代码保存下来,整理了一个txt文件,内容和下面的类似:

<span id="uidynatreeCb3trSLA1">New South Wales<a href="/ausstats/abs@nrp.nsf/lookup/1Main+Features12006-2010" οnclick="openWindow('/ausstats/abs@nrp.nsf/lookup/1Main+Features12006-2010','1');"> - Get Data</a></span><br>

一共有1665行,格式都和上面的类似。可以看到get  data的链接是/ausstats/abs@nrp.nsf/lookup/1Main+Features12006-2010,然后就是从上面的字符串中提取get data的链接,获取连接后,使用urllib获取url地址的html内容。

然后再从获取的html中查找xls的下载地址,知道xls的下载地址,使用urlretrieve函数保存到本地即可。整个代码72行,如下:

# -*- coding:gb2312 -*-
# 有问题请联系我 liminlu0314@gmail.com
import sys
import urllib
import re#从读取的html中解析下载地址
def ParserXlsUrl(content):iPost = content.find('%2Exls&')if iPost == -1:return ''strTemp = content[iPost-100:iPost+300]iPos = strTemp.find('<a href="')strTemp = strTemp[iPos+9:]iPos = strTemp.find('&Latest"><')strTemp = strTemp[:iPos+7]
#/AUSSTATS/freenrp.nsf/log?openagent&Region%5F1%2Exls&1&2006%2D2010%20National%20Regional%20Profile&CCAA9316217A9E75CA25793B001332FA&0&2006%2D2010&04%2E11%2E2011&Latest    return 'http://www.abs.gov.au' + strTemp#从读进来的字符串解析url
def Save2Xls(lines):iPos = lines.find('>')strTmp = lines[iPos+1:]iPos = strTmp.find('<')strName = strTmp[:iPos]  #取出NameiPos = strTmp.find('"')strTmp = strTmp[iPos+1:]iPos = strTmp.find('"')strTmp = strTmp[:iPos]#/ausstats/abs@nrp.nsf/lookup/1Main+Features12006-2010iPos = strTmp.find('lookup/')strTmp = strTmp[iPos+7:]iPos = strTmp.find('Main+')strIdCode = strTmp[:iPos]strStart = 'http://www.abs.gov.au/AUSSTATS/abs@nrp.nsf/DetailsPage/'strMid = '2006-2010?OpenDocument&tabname=Details&prodno='strEnd = '&issue=2006-2010&num=&view=&'strUrl = strStart + strIdCode + strMid + strIdCode + strEndhtml = urllib.urlopen(strUrl)#打开连接content = html.read()   #获取页面内容strUrlXls = ParserXlsUrl(content)if strUrlXls == '':return 0strXlsDir = './Xls/'strXls = strXlsDir + strName + '_' + strIdCode + '.xls'urllib.urlretrieve(strUrlXls, strXls)  #开始下载return 1if __name__ =="__main__":f = open('GetUrl.htm', 'r')alllines = f.readlines()f.close()index = 0for eachline in alllines:Save2Xls(eachline)index = index + 1print "current is %d of 1665, precent %d%%" %(index, (int)(index / 1665.0 * 100))

之后程序写完后,发现不知道下载到什么地方了,又加了个进度信息。 喜欢python,同样的代码用C++我不敢想象,还是Python吧。

使用Python批量下载数据相关推荐

  1. python批量下载数据|工具箱

    现在很多数据提供HTTPServer下载服务,在这里介绍一种普遍适用的利用URL批量下载数据的python方法 前言 很多数据支持FTP下载,也提供OPeNDAP方式下载.两者的差异是显而易见的: ( ...

  2. 如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...

    模拟登录 这里要用到两个包:requests和json.requests使用前得先安装:pip install requests. In [3]: 进群:548377875 即可获取数十套PDF哦! ...

  3. 如何用python批量下载数据_Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  4. 如何用python批量下载数据_使用Python批量下载数据

    这次依旧是,不过下载的是Australian Bureau of Statistics的数据,都是xls的表格,网址为:http://www.abs.gov.au.网页打开左边有棵树目录,里面记录的澳 ...

  5. 如何用python批量下载数据_如何用python从wind中批量导出数据

    2017-08-07 回答 先建立一个数据库. qw@qw-latitude-e4300:~$ mysql -u root -p enter password: 打开数据库,正确输入密码之后,呈现下面 ...

  6. 如何用python批量下载数据_利用python脚本,批量自动下载欧洲中心的气象数据

    登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 leeol 于 2017-10-27 18:22 编辑 更新:近日我在下数据时发现EC微调了下载方法,具体 ...

  7. 使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据(precise orbit data)

    使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据 1. 安装Python及data_downloader包 2. 下载精密轨道数据与辅助数据 1. 安装Python及data_d ...

  8. 用Python批量下载DACC的MODIS数据

    本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...

  9. 使用python批量下载天猫数据并进行合并(非爬虫)

    使用python批量下载天猫数据并进行合并(非爬虫) 做电商运营少不了数据分析支持,无论是选品.选关键词.研究竞品还是开直通车.店铺引流都需要有数据支持.不过生意参谋虽然强大,但现在都只能显示&quo ...

最新文章

  1. iOS基本UI控件总结
  2. select下拉框兼容写法
  3. CVX学习笔记(转载
  4. kafka启动后闪退
  5. Linux统计文件夹下文件数量
  6. win10禁止自动更新
  7. 两组基下有相同坐标的向量_特征向量与线性变换
  8. 【latex】2 使用Aurora与在word中编写伪代码
  9. 如何编写一份高质量的测试报告
  10. 绕坐标轴以及任意轴的旋转矩阵的推导
  11. linux opessl下载_linux安装openssl
  12. vue 监听键盘回车事件 @keyup.enter || @keyup.enter.native
  13. Cocos独立游戏精品|高自由度地牢探险《贪婪洞窟​》
  14. pc机未连接手机ANDroid,安卓手机连接电脑没显示的解决教程简述
  15. UBUNTU 12.04 3D 特效设置(三)
  16. 如何用VBA从EXCEL表取数据?问题1:1次性整体写入,还是循环写入数组呢? 问题2:取得数据后如何定位需要的那个?
  17. 2D变形效果有几种?变形效果讲解
  18. web应用部署的根目录
  19. 读书笔记——上瘾:让用户养成使用习惯的四大产品逻辑
  20. Fortran学习笔记(5)

热门文章

  1. 安卓3d游戏引擎_3D球闯关游戏-3D球闯关游戏安卓官方版预约 v1.2.5
  2. Android:单元测试InstrumentationTestRunner
  3. 华中科技大学计算机暑期夏令营,2019年华中科技大学计算机专业夏令营
  4. Mysql中的where条件子句的使用方法
  5. 201612-1-中间数
  6. transform.rotation和GetComponentRigidbody().MoveRotation
  7. 【Computer Organization笔记07】实验课:可编程逻辑器件介绍,硬件编程方法与原则,硬件编程流程
  8. APM终端用户体验监控分析(下)
  9. win2008支持mysql asp.net_Win7、win2008中让IIS7支持asp的方法
  10. PHP中COOKIE即时生效,php实现cookie即时生效