继续把其他博主的程序拿来魔改一番,原博主博文链接如下,不过博文中只有代码,没别的了。
原博主代码地址
具体代码如下,自己添加的部分很混乱,还好能用。原博主保存的是txt格式,以字典形式保存的。因为我要把数据导进matlab中用,所以筛出自己需要的导出csv格式了。其实不用这么麻烦,可惜本人就一年多前学过一段时间python,后来又丢了,数据急着用,就先这样了。等忙完再自己重写个把(希望不食言)。这个博主爬取的网站气象信息比较全,有湿度和降水,刚好需要,降水数据真的太难找了。
用了最笨的方法,最差的代码风格 _(:з」∠)
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 13 11:48:58 2020
@author: ZAN
"""
import requests
import pandas as pd
from bs4 import BeautifulSoup
from collections import defaultdict
from dateutil.relativedelta import relativedelta
from datetime import datetime
import numpy as np
class weather_data:
def __init__(self,city,start_year,end_year,start_month=1,end_month = 12):
"""
:param city: 需爬取的城市全拼
:param start_year: 爬取开始年份
:param end_year: 爬取结束年份
:param start_month: 爬取开始月份
:param end_month: 爬取结束月份
"""
self.city = city
self.start_time = datetime.strptime(f"{start_year}-{start_month}",'%Y-%m')
self.end_time = datetime.strptime(f"{end_year}-{end_month}",'%Y-%m')
def _get_original_html(self):
"""
网页爬取
"""
url = f"https://tianqi.911cha.com/{self.city}/{self.start_time.year}-{self.start_time.month}.html"
print(url)
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}#填写自己浏览器内容
response = requests.get(url, headers=header)