|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 要学习 于 2018-5-17 11:54 编辑
python2.7.14的版本代码
请老师们看看,为什么这个循环写入结果 到文本 的 循环的代码 出错在哪里?
怎么重复写入内容了
我的目的是,分别把最近三天的数据分别写到 文本里,文本名字为:年月日.txt
这个代码运行的结果:
20180514.txt
20180515.txt
20180516.txt
代码能正确获得想要的数据,
但是,
20180514.txt的内容 是 3天的数据
20180515.txt的内容 是 2天的数据
20180515.txt的内容 是 1天的数据
循环写入内容出错了。
要如何修正代码,让代码实现 只写入当天的数据呢????
请老师们帮忙看看代码
- # -*- coding: utf-8 -*-
- import time,datetime,requests,re
- #range(1,4) 前3天数据下载
- def get_ssl_html():
-
- page_num =range(1,4)
- tianshu = len(page_num)
- b = ''
- for page in page_num:
- now_time = datetime.datetime.now()
- yes_time = now_time + datetime.timedelta(days=-page_num[page -1])
- yes_time_nyr = yes_time.strftime('%Y%m%d')
- url = 'http://www.baidu.com'\
- + yes_time_nyr + '.html'
- headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
- r = requests.get(url, headers=headers, timeout=9)
- html = r.text
- b = b + html
-
- res_td = r'<td class="tdbb tdbr">.*?</td>.*?<td class="tdbb tdbr">(.*?)</td>.*?<td class="number-list tdbb tdbr" align="center">.*?<span class="blueBall">(.*?)</span>.*?<span class="blueBall">(.*?)</span>.*?<span class="blueBall">(.*?)</span>'
- m_td = re.findall(res_td,b,re.S|re.M)
- mm_td = m_td[::-1]
- for line in mm_td:
- list1 = []
-
- with open( yes_time_nyr + ".txt", "w") as f:
-
- list1=[''.join(item) for item in mm_td]
- list2= "".join(list1)
- list3='\n'.join(list2[i:i+13] for i in range(0,len(list2),13))
- list4 = list3.split('\n')
- s =''
- for i in list4:
- s += i[0:10] + '\t'+ i[10:13]+ '\n'
-
- f.writelines(s)
- return b
- if __name__ == '__main__':
- get_ssl_html()
复制代码
|
|