鱼C论坛

 找回密码
 立即注册
查看: 765|回复: 4

拼凑出来的代码,循环写入 有问题,请指正,谢谢

[复制链接]
发表于 2018-5-17 11:30:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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天的数据
循环写入内容出错了。


要如何修正代码,让代码实现 只写入当天的数据呢????
请老师们帮忙看看代码


  1. # -*- coding: utf-8 -*-

  2. import time,datetime,requests,re

  3. #range(1,4) 前3天数据下载
  4. def get_ssl_html():
  5.    
  6.     page_num =range(1,4)
  7.     tianshu = len(page_num)
  8.     b = ''
  9.     for page in page_num:
  10.         now_time = datetime.datetime.now()
  11.         yes_time = now_time + datetime.timedelta(days=-page_num[page -1])
  12.         yes_time_nyr = yes_time.strftime('%Y%m%d')
  13.         url = 'http://www.baidu.com'\
  14.               + yes_time_nyr + '.html'
  15.         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'}
  16.         r = requests.get(url, headers=headers, timeout=9)
  17.         html = r.text
  18.         b = b + html
  19.    
  20.         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>'
  21.         m_td = re.findall(res_td,b,re.S|re.M)
  22.         mm_td = m_td[::-1]
  23.         for line in mm_td:
  24.             list1 = []
  25.    
  26.         with open( yes_time_nyr + ".txt", "w") as f:
  27.    
  28.             list1=[''.join(item) for item in mm_td]
  29.             list2= "".join(list1)
  30.             list3='\n'.join(list2[i:i+13] for i in range(0,len(list2),13))

  31.             list4 = list3.split('\n')
  32.             s =''
  33.             for i in list4:
  34.                 s += i[0:10] + '\t'+ i[10:13]+ '\n'
  35.    
  36.             f.writelines(s)
  37.     return b

  38. if __name__ == '__main__':
  39.         get_ssl_html()
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-17 11:32:33 | 显示全部楼层
请老师们帮忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-17 11:53:27 | 显示全部楼层
日期的话

我原本是想加入 这种方法来 获取 年月日 的



  1. # -*- coding=utf-8 -*-  
  2. import datetime  
  3.   
  4. def dateRange(beginDate, endDate):  
  5.     dates = []  
  6.     dt = datetime.datetime.strptime(beginDate, "%Y%m%d")  
  7.     date = beginDate[:]  
  8.     while date <= endDate:  
  9.         dates.append(date)  
  10.         dt = dt + datetime.timedelta(1)  
  11.         date = dt.strftime("%Y%m%d")  
  12.     return dates  
  13.   
  14. if __name__ == '__main__':  
  15.     for date in dateRange('20180514', '20180516'):  
  16.         print date
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-21 16:17:56 | 显示全部楼层
你用一个列表来表示内容.一天个元素.按元素写入文件.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-21 16:43:38 | 显示全部楼层
py2 不了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表