Python2.7-浙江省实时天气爬取
2024-10-13 17:25:52
先对中国天气网的实时天气数据进行了研究,数据在http://www.weather.com.cn/weather1d/101010100.shtml中,可以通过城市代码进行爬取,但实况数据是用JS动态生成的,不能直接爬。
然后研究了浙江天气网http://zj.weather.com.cn/xztq/index.shtml,通过源代码发现数据都可以从另一个有规律的网址里得到,网址为http://www.zjmb.gov.cn/jxhyb/detailzjsk.jsp?sn={sn}&day=0&id={id}
sn个人认为是浙江省内部的编号,id是全国城市的编号,通过试验发现不需要day和id参数也可以获得目标网址,因此只需要知道城市对应sn值即可获得相应数据
所以第一步先要获得城市与对应sn,观察发现sn值都在58400至58800之间,因此对这个区间进行循环访问,记录有效数据就可以达到目标,对不存在的sn值进行访问,都会得到金华数据,所以剔除也较为方便
将对应关系保存至文件时一开始尝试使用字典保存,写入时用json转换,但是这样做会使字符前的反斜杠不存在转义作用,直接被视为一个反斜杠对待,因此最终还是选择了将数据写入csv文件中
第二步就是常规的爬取了,用requests访问网页,bs4解析网页提取数据,数据同样保存在csv中
第三步是对性能的优化,判断每次爬取的数据是否是正确的,是否与上次的更新时间相同等
第四步对代码进行了优化,一开始的代码是写在一坨的,不太美观,也不方便寻找错误,因此将代码改以函数形式来写,提升了美观度和容错性
后续:
代码等会搞GitHub了再上传。。。
等学会数据库了将数据存入数据库中
最新文章
- Oracle 查询出来的数据取第一条
- POJ 2503
- css3属性之 box-sizing
- apache本地网址配置
- PDO应用
- Android-根据ImageView的大小来压缩Bitmap,避免OOM
- 【BJG吐槽汇】第一期 - 警惕亚马逊莫名自动扣款!千万不要进了它的坑!
- openStack 性能开测
- Lifting the Stone(hdoj1115)
- python显示中文出错以及抛出UnicodeDecodeError的处理办法
- iOS 支付(含支付宝、银联、微信)
- java之JVM(二)
- 最小化webpack项目
- js屏蔽/过滤 特殊字符,输入就删除掉,实时删除,
- ";她等待刀尖已经太久";--茨维塔耶娃诗抄
- delphi 通过事务插入数据
- Class DesiredCapabilities
- hive\hadoop 常用命令
- Oracle 存储过程procedure之数据更新-游标
- 【BZOJ】3732: Network【Kruskal重构树】