爬取天气数据并写入数据库中的总结

本文介绍了一种高效地将大量数据批量插入数据库的方法,并详细解释了如何通过Python的MySQLdb模块实现这一过程。此外,还讨论了在操作过程中如何处理可能出现的异常,确保数据的完整性和事务的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 sql = 'INSERTINTO table_name (city,air_quality,AQI,PM2_5,dt)VALUES(%s,%s,%s,%s,%s)'
try:
 cur.executemany(sql,tuple(data))#data 是列表,但是里面的元素是元组
print("now: ……Done……")
 #对于写入数据库,这个fetchall没有用,但是对于查询,他返回的是查询的结果。
 #print cur.fetchall()
 mysql_conn.commit()
except MySQLdb.Error,e:
 f = open('weather.log','a')
 print "mysql发生异常,异常原因在log文件中"
 traceback.print_exc(file=f)

#如果发生异常,回滚数据
 mysql_conn.rollback()
finally:
 cur.close()
 mysql_conn.close()
 这样操作的时间更快,如果你插入100万条数据,用cur.execute()执行,时间将会更长。这样的效率比较高。
 另外在数据库的写入过程中,会出现异常,要对异常进行捕获,并且,发生异常之后要进行回滚,这样保证数据能正确的写入数据库。

item_date = re.finditer(r'(%s)(</td>\s*<td class=\"aqi-lv)(\d)(\">\s*%s{1,4}</td>\s*<td>)(\d{1,3})(\s*</td>\s+<td>\d{1,3}</td>\s*)(<td>)(\d{1,3})(\s*</td>)'
      %(past_one_day,u'[\u4e00-\u9fa5]'),url_read)
这个我之前写过,可以将字符串制定,去内容中匹配。比如你看的一个网页内容,有北京,河南,郑州,南京,别的你都不想看。
这时候,用这个方法去过滤,效果还是不错的。其中u开头的东西,是用来匹配中文字符。

在写入到文件的时候,推荐使用codecs的open方法,这个方法可以指定写入或者打开文件,按照某种编码格式。
其中爬取的网站是:url = "http://www.tianqihoubao.com/aqi/"+province_set[i]+"-"+month+".html"




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国企打工人

随缘吧打赏与否还是会坚持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值