本文由我司收集整编,推荐下载,如有疑问,请与我司联系
当
Python
与数模相遇
2013/07/24 0
数模有一个题目要处理杭州自行车在每个站点可用数量和已经借
出数量,这数据在
hzbus
上可以获取,它是
10
分钟更新一次的。这些数据手动获
取,需要不停的刷页面,从
6
:
00am
到
9:00pm,
显然不可取。
先用
Chrome
抓包,
找到了相应数据的页面
URL
,然后写个脚本把此
URL
的
html
代码,并且设置计时
器,保存到本地
;
分析
html
代码,获得数据所在处的特点,然后写个脚本提取它
们,并保存到指定文件中
. 3.
计时:
10
分钟计时一次,我使用
sleep
函数,不过
urllib
那里的
response
时间要好几秒,这会积少成多导致计时不准确,需要
sleep
时候减
去消耗的时间。另外发现
sleep
函数比设定时间多
sleep2
秒,不知道为什么
4.
本地
数据处理:自行车数量,总数是
21
,不过已经借出数量(
data1
)和可用数量
(data2)
,可能是
1
位数,可能是
2
位数,需要分类讨论。用正则的话,第一我不熟
练,第二没必要。用
filter
函数过滤出所有数字,发现除了需要的两个
data
,还有
html
页面中的
font-size
,吐槽一下写那个页面的人,
css
什么的没有完全分离。
。然
后获取的数据可以是
122112012
也可以是
120122112
两种情况,都是先去掉首尾的
12
(表示字体大小
)
然后发现两个
data
之间的
12
,也是字体大小,判断,如果
filter
之后的子串
s[4:6]
是
12
那么表示
data1
是两位数,
data2
取后几位就好;如果
s[3:5]
是
12
那么表示
data1
是一位数
,...
5.
然后是遍历所有保存的
html
文件了,
(其实我保
存为
“
小时
-
分钟
.txt”
的格式)
,发现
os
模块的
listdir
和系统的
dir
或者
linux
的
ls
命
令一样,都是按照文件名字按顺序列出,这就省去了我们自行处理。
#filename=“D:/02-54.txt”resultfile=“D:/result/result.txt” #
最终所有处理好的数据存储的
文件
f=open(resultfile,”a”)
#a:
append
,追加模式
for
filename
in
allfile:
file=open(“D:/data/”+filename)
for
i
in
range(1,89):
line=file.readline()
if
i==88:
result=filter(str.isdigit,
line)
if
result[4:6]==“12”:
data1=result[2:4]
data2=result[6:len(result)-2]
f.write(“%s
%s\n”
%
(data1,
data2))
if
result[3:5]==“12”:
data1=result[2:3] data2=result[5:len(result)-2] f.write(“%s %s\n” % (data1, data2))tips:
感
谢大家的阅读,本文由我司收集整编。仅供参阅!