如何用python批量下载数据_使用Python批量下载数据
这次依旧是,不过下载的是Australian Bureau of Statistics的数据,都是xls的表格,网址为:http://www.abs.gov.au。网页打开左边有棵树目录,里面记录的澳大利亚的行政区名,然后后面有个get data 的链接,不过这棵树是动态加载的,客户端没法获取到全部的内容,像我这种从来没有做过网络编程的,脸html都看不懂的人,更不懂ajax了。笨人有笨方法,于是就把树全部点开,然后把网页的源代码保存下来,整理了一个txt文件,内容和下面的类似:
New South Wales - Get Data
一共有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('<')
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] #取出Name
iPos = strTmp.find('"')
strTmp = strTmp[iPos+1:]
iPos = strTmp.find('"')
strTmp = strTmp[:iPos]
#/ausstats/abs@nrp.nsf/lookup/1Main+Features12006-2010
iPos = 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 + strEnd
html = urllib.urlopen(strUrl)#打开连接
content = html.read()#获取页面内容
strUrlXls = ParserXlsUrl(content)
if strUrlXls == '':
return 0
strXlsDir = './Xls/'
strXls = strXlsDir + strName + '_' + strIdCode + '.xls'
urllib.urlretrieve(strUrlXls, strXls) #开始下载
return 1
if __name__ =="__main__":
f = open('GetUrl.htm', 'r')
alllines = f.readlines()
f.close()
index = 0
for eachline in alllines:
Save2Xls(eachline)
index = index + 1
print "current is %d of 1665, precent %d%%" %(index, (int)(index / 1665.0 * 100))之后程序写完后,发现不知道下载到什么地方了,又加了个进度信息。喜欢python,同样的代码用C++我不敢想象,还是Python吧。
如何用python批量下载数据_使用Python批量下载数据相关推荐
- python怎么批量下载年报_使用Python批量下载Wind数据库中的PDF报告
原标题:使用Python批量下载Wind数据库中的PDF报告 背景 最近小编出于工作需要,准备在Wind金融数据终端批量下载上市公司2019年第一季度业绩预告.通过相关的条件检索,发现其相关数据有近百 ...
- 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......
文档内容: 1:下载<hadoop权威指南>中的气象数据 2:对下载的气象数据归档整理并读取数据 3:对气象数据进行map reduce进行处理 关键词:<Hadoop权威指南> ...
- python向es写入大量数据_使用Python-elasticsearch-bulk批量快速向elasticsearch插入数据_李谦的博客-CSDN博客...
from elasticsearch import Elasticsearch from elasticsearch import helpers import pymysql import time ...
- python获取股票逐笔交易数据_利用python下载股票交易数据
前段时间玩Python时无意看到了获取股票交易数据的tushare模块,由于自己对股票交易挺有兴趣,加上现在又在做数据挖掘工作,故想先将股票数据下载到数据库中,以便日后分析: # 导入需要用到的模块 ...
- 爬虫goodreads数据_使用Python从Goodreads数据中预测好书
爬虫goodreads数据 Photo of old books by Ed Robertson on Unsplash 埃德·罗伯森 ( Ed Robertson)的旧书照片,内容为Unsplash ...
- 从ncbi下载数据_如何从NCBI下载所有细菌组件
从ncbi下载数据 One of the most important steps in genome analysis is gathering the data required for down ...
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- python编程免费小说_使用Python开发小说下载器,不再为下载小说而发愁
有点荒废 这几天有点荒废,之前弃坑的网文<伏天氏>,这几天又给捡起来了.然后一发不可收拾的只想看小说,荒废了我的学习.在这里我要检讨啊..... 像我这样的穷人,看小说肯定是找免费的网站, ...
- python 文件批量转换格式_使用python批量化音乐文件格式转换的实例
使用python批量化音乐文件格式转换的实例 最近在做声音文件数据处理,写了一个自动将m4a文件转化为wav的脚本. import os m4a_path = "/Users/Downloa ...
最新文章
- Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析
- Geoserver中调整polygon图层的填充颜色透明度
- eclipse 设置 content type 编码格式
- 代理模式【介绍、静态代理、动态代理、入门、应用】
- 循环结构_do-while循环
- 为什么打不开_发票查重百科导出的发票台账为什么附件打不开?
- 手把手JDK环境变量配置
- 实现两个Mysql数据库同步
- linux 网卡驱动 优化,Linux多核环境网卡驱动优化研究①.PDF
- TreeMap 排序
- matlab解耦合方程,如何在Matlab中求解耦合随机微分方程
- React第一天(尚硅谷视频)
- 干货 | 基于JMP的方差分析及两两比较的思路与实现
- 解决方案|致拓T8数字化ERP
- 跨站脚本(XSS)漏洞
- 计算机视觉(相机标定)-1.1-针孔摄像机透镜
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- matlab 复数函数拟合,lsqcurvefit拟合结果为复数
- GREENPLUM 5.17 centos 6.10 详细安装步骤
- 【Java整合Milvus】SpringBoot整合Milvus向量数据库以及虹软SDK实现以图搜图