毕业设计-1.05

情况概述:

  对爬取代码进行爬取,发现不少错误,进行修改并继续爬取。

代码修改情况:

IO.py

# 写入文件
def cw(file,con):
    f=open(file,"a+",encoding='utf-8')       # 以追加的方式
    f.write(con)
    f.close()


if __name__=="__main__":
    cw("sss.txt", "aaaaa")  # 以追加的方式

CityEn_Deal.txt

北京市 北京市 beijing
上海市 上海市 shanghai
天津市 天津市 tianjin
重庆市 重庆市 chongqing
甘肃省 阿克塞哈萨克族自治县 akesu
云南省 安宁市 anning
安徽省 安庆市 anqing
辽宁省 鞍山市 anshan
贵州省 安顺地区 anshun
河南省 安阳市 anyang
吉林省 白城市 baicheng
吉林省 白山市 baishan
甘肃省 白银市 baiyin
安徽省 蚌埠市 bengbu
河北省 保定市 baoding
陕西省 宝鸡市 baoji
云南省 保山地区 baoshan
四川省 巴中地区 bazhong
广西省 北海市 beihai
辽宁省 本溪市 benxi
山东省 滨州地区 binzhou
新疆省 博乐市 bole
河北省 沧州市 cangzhou
湖南省 常德市 changde
新疆省 昌吉回族自治州 changji
江苏省 常熟市 changshu
江苏省 常州市 changzhou
安徽省 巢湖市 chaohu
北京市 朝阳区 chaoyang
广东省 潮州市 chaozhou
河北省 承德市 chengde
四川省 成都市 chengdu
陕西省 城固县 chenggu
湖南省 郴州市 chenzhou
湖北省 赤壁市 chibi
内蒙古 赤峰市 chifeng
贵州省 赤水市 chishui
安徽省 池州市 chizhou
广西省 崇左市 chongzuo
云南省 楚雄彝族自治州 chuxiong
安徽省 滁州市 chuzhou
浙江省 慈溪市 cixi
广东省 从化市 conghua
云南省 大理白族自治州 dali
辽宁省 大连市 dalian
辽宁省 丹东市 dandong
江苏省 丹阳市 danyang
黑龙江省 大庆市 daqing
山西省 大同市 datong
四川省 德阳市 deyang
山东省 德州市 dezhou
广东省 东莞市 dongguan
浙江省 东阳市 dongyang
山东省 东营市 dongying
贵州省 都匀市 douyun
吉林省 敦化市 dunhua
湖北省 恩施土家族苗族自治州 enshi
广西省 防城港市 fangchenggang
山东省 肥城市 feicheng
浙江省 奉化市 fenghua
辽宁省 抚顺市 fushun
辽宁省 阜新市 fuxin
安徽省 阜阳市 fuyang
浙江省 富阳市 fuyang1
福建省 福州市 fuzhou
江西省 抚州市 fuzhou1
江苏省 赣榆县 ganyu
江西省 赣州市 ganzhou
广东省 高明区 gaoming
江苏省 高邮市 gaoyou
青海省 格尔木市 geermu
云南省 个旧市 gejiu
河南省 巩义市 gongyi
四川省 广安市 guangan
四川省 广元市 guangyuan
广东省 广州市 guangzhou
广西省 贵港市 guigang
广西省 桂林市 guilin
贵州省 贵阳市 guiyang
宁夏省 固原地区 guyuan
黑龙江省 哈尔滨市 haerbin
辽宁省 海城市 haicheng
海南省 海口市 haikou
江苏省 海门市 haimen
浙江省 海宁市 haining
新疆省 哈密地区 hami
河北省 邯郸市 handan
浙江省 杭州市 hangzhou
陕西省 汉中市 hanzhong
河南省 鹤壁市 hebi
安徽省 合肥市 hefei
河北省 衡水市 hengshui
湖南省 衡阳市 hengyang
新疆省 和田地区 hetian
广东省 河源市 heyuan
山东省 菏泽地区 heze
广东省 花都市 huadou
江苏省 淮安市(原淮阴市) huaian
安徽省 淮北市 huaibei
湖南省 怀化市 huaihua
安徽省 淮南市 huainan
湖北省 黄冈市 huanggang
安徽省 黄山市 huangshan
湖北省 黄石市 huangshi
内蒙古 呼和浩特市 huhehaote
广东省 惠州市 huizhou
辽宁省 葫芦岛市 huludao
浙江省 湖州市 huzhou
江西省 吉安市 jian
江苏省 江都市 jiangdou
广东省 江门市 jiangmen
江苏省 江阴市 jiangyin
山东省 胶南市 jiaonan
山东省 胶州市 jiaozhou
河南省 焦作市 jiaozuo
浙江省 嘉善县 jiashan
浙江省 嘉兴市 jiaxing
山西省 介休市 jiexiu
吉林省 吉林市 jilin
山东省 即墨市 jimo
山东省 济南市 jinan
山西省 晋城市 jincheng
江西省 景德镇市 jingdezhen
云南省 景洪市 jinghong
江苏省 靖江市 jingjiang
湖北省 荆门市 jingmen
湖北省 荆州市 jingzhou
浙江省 金华市 jinhua
内蒙古 集宁市 jining1
山东省 济宁市 jining
福建省 晋江市 jinjiang
江苏省 金坛市 jintan
山西省 晋中市 jinzhong
辽宁省 锦州市 jinzhou
湖南省 吉首市 jishou
江西省 九江市 jiujiang
甘肃省 酒泉地区 jiuquan
黑龙江省 鸡西市 jixi
河南省 济源市 jiyuan
江苏省 句容市 jurong
河南省 开封市 kaifeng
贵州省 凯里市 kaili
河北省 开平区 kaiping
云南省 开远市 kaiyuan
新疆省 喀什地区 kashen
新疆省 克拉玛依市 kelamayi
新疆省 库尔勒市 kuerle
新疆省 奎屯市 kuitun
云南省 昆明市 kunming
江苏省 昆山市 kunshan
广西省 来宾市 laibin
山东省 莱芜市 laiwu
山东省 莱西市 laixi
山东省 莱州市 laizhou
河北省 廊坊市 langfang
甘肃省 兰州市 lanzhou
西藏省 拉萨市 lasa
四川省 乐山市 leshan
江苏省 连云港市 lianyungang
山东省 聊城市 liaocheng
辽宁省 辽阳市 liaoyang
吉林省 辽源市 liaoyuan
云南省 丽江地区 lijiang
浙江省 临安市 linan
云南省 临沧地区 lincang
山西省 临汾市 linfen
河南省 灵宝市 lingbao
内蒙古 临河市 linhe
甘肃省 临夏回族自治州 linxia
山东省 临沂市 linyi
浙江省 丽水市 lishui
安徽省 六安市 liuan
贵州省 六盘水市 liupanshui
广西省 柳州市 liuzhou
江苏省 溧阳市 liyang
福建省 龙海市 longhai
福建省 龙岩 longyan
湖南省 娄底地区 loudi
河南省 漯河市 luohe
河南省 洛阳市 luoyang
云南省 潞西市 luxi
四川省 泸州市 luzhou
山西省 吕梁市 lvliang
辽宁省 旅顺口区 lvshun
安徽省 马鞍山市 maanshan
广东省 茂名市 maoming
吉林省 梅河口市 meihekou
四川省 眉山地区 meishan
广东省 梅州市 meizhou
陕西省 勉县 mianxian
四川省 绵阳市 mianyang
黑龙江省 牡丹江市 mudanjiang
福建省 南安市 nanan
江西省 南昌市 nanchang
四川省 南充市 nanchong
江苏省 南京市 nanjing
广西省 南宁市 nanning
福建省 南平市 nanping
江苏省 南通市 nantong
河南省 南阳市 nanyang
四川省 内江市 neijiang
浙江省 宁波市 ningbo
福建省 宁德市 ningde
辽宁省 盘锦市 panjin
四川省 攀枝花市 panzhihua
山东省 蓬莱市 penglai
河南省 平顶山市 pingdingshan
山东省 平度市 pingdu
浙江省 平湖市 pinghu
甘肃省 平凉地区 pingliang
江西省 萍乡市 pingxiang
辽宁省 普兰店市 pulandian
广东省 普宁市 puning
福建省 莆田市 putian
河南省 濮阳市 puyang
贵州省 黔南布依族苗族自治州 qiannan
江苏省 启东市 qidong
山东省 青岛市 qingdao
甘肃省 庆阳地区 qingyang
广东省 清远市 qingyuan
山东省 青州市 qingzhou
河北省 秦皇岛市 qinhuangdao
广西省 钦州市 qinzhou
海南省 琼海市 qionghai
黑龙江省 齐齐哈尔市 qiqihaer
福建省 泉州市 quanzhou
云南省 曲靖市 qujing
浙江省 衢州市 quzhou
西藏省 日喀则地区 rikaze
山东省 日照市 rizhao
山东省 荣成市 rongcheng
江苏省 如皋市 rugao
浙江省 瑞安市 ruian
山东省 乳山市 rushan
浙江省 三门县 sanmenxia
福建省 三明市 sanming
海南省 三亚市 sanya
福建省 厦门市 xiamen
广东省 佛山市 shan
陕西省 商洛地区 shangluo
河南省 商丘市 shangqiu
江西省 上饶市 shangrao
浙江省 上虞市 shangyu
广东省 汕头市 shantou
陕西省 安康地区 ankang
广东省 韶关市 shaoguan
浙江省 绍兴市 shaoxing
湖南省 邵阳市 shaoyang
辽宁省 沈阳市 shenyang
广东省 深圳市 shenzhen
新疆省 石河子市 shihezi
河北省 石家庄市 shijiazhuang
云南省 石林彝族自治县 shilin
福建省 石狮市 shishi
湖北省 十堰市 shiyan
山东省 寿光市 shouguang
黑龙江省 双鸭山市 shuangyashan
山西省 朔州市 shuozhou
江苏省 沭阳县 shuyang
云南省 思茅市 simao
吉林省 四平市 siping
吉林省 松原市 songyuan
四川省 遂宁市 suining
湖北省 随州市 suizhou
江苏省 苏州市 suzhou
新疆省 塔城地区 tacheng
山东省 泰安市 taian
江苏省 太仓市 taicang
江苏省 泰兴市 taixing
山西省 太原市 taiyuan
江苏省 泰州市 taizhou
浙江省 台州市 taizhou1
河北省 唐山市 tangshan
云南省 腾冲县 tengchong
山东省 滕州市 tengzhou
湖北省 天门市 tianmen
甘肃省 天水市 tianshui
辽宁省 铁岭市 tieling
陕西省 铜川市 tongchuan
内蒙古 通辽市 tongliao
安徽省 铜陵市 tongling
浙江省 桐庐县 tonglu
贵州省 铜仁地区 tongren
浙江省 桐乡市 tongxiang
北京市 通州区 tongzhou
吉林省 通化市 tonghua
新疆省 吐鲁番地区 tulufan
辽宁省 瓦房店市 wafangdian
山东省 潍坊市 weifang
山东省 威海市 weihai
陕西省 渭南市 weinan
山东省 文登市 wendeng
浙江省 温岭市 wenling
浙江省 温州市 wenzhou
内蒙古 乌海市 wuhai
湖北省 武汉市 wuhan
安徽省 芜湖市 wuhu
江苏省 吴江市 wujiang
内蒙古 乌兰浩特市 wulanhaote
甘肃省 武威地区 wuwei
江苏省 无锡市 wuxi
广西省 梧州市 wuzhou
吉林省 西安区 xian
河南省 项城市 xiangcheng
湖北省 襄樊市 xiangfan
浙江省 象山县 xiangshan
湖南省 湘潭市 xiangtan
湖南省 湘乡市 xiangxiang
湖北省 咸宁市 xianning
湖北省 仙桃市 xiantao
陕西省 咸阳市 xianyang
四川省 西昌市 xichang
河北省 邢台市 xingtai
贵州省 兴义市 xingyi
青海省 西宁市 xining
河南省 新乡市 xinxiang
河南省 信阳市 xinyang
江西省 新余市 xinyu
山西省 忻州市 xinzhou
江苏省 宿迁市 suqian
江苏省 宿豫县 suyu
安徽省 宿州市 suzhou1
安徽省 宣城市 xuancheng
河南省 许昌市 xuchang
江苏省 徐州市 xuzhou
四川省 雅安地区 yaan
内蒙古 牙克石市 yakeshi
陕西省 延安市 yanan
吉林省 延边朝鲜族自治州 yanbian
江苏省 盐城市 yancheng
广东省 阳江市 yangjiang
山西省 阳泉市 yangquan
江苏省 扬州市 yangzhou
吉林省 延吉市 yanji
山东省 烟台市 yantai
山东省 兖州市 yanzhou
四川省 宜宾市 yibin
湖北省 宜昌市 yichang
江西省 宜春市 yichun
黑龙江省 伊春市 yichun1
新疆省 伊犁哈萨克自治州 yili
宁夏省 银川市 yinchuan
辽宁省 营口市 yingkou
江西省 鹰潭市 yingtan
新疆省 伊宁市 yining
浙江省 义乌市 yiwu
江苏省 宜兴市 yixing
湖南省 益阳市 yiyang
浙江省 永康市 yongkang
湖南省 永州市 yongzhou
湖南省 岳阳市 yueyang
浙江省 玉环县 yuhuan
陕西省 榆林地区 yulin1
广西省 玉林市 yulin
山西省 运城市 yuncheng
云南省 玉溪市 yuxi
浙江省 余姚市 yuyao
山东省 枣庄市 zaozhuang
广东省 增城市 zengcheng
吉林省 长春市 changchun
辽宁省 长海县 changhai
河北省 张家口市 zhangjiagang
河北省 张家口市 zhangjiajie
河北省 张家口市 zhangjiakou
福建省 长乐市 changle
山东省 章丘市 zhangqiu
湖南省 长沙市 changsha
甘肃省 张掖地区 zhangye
山西省 长治市 changzhi
福建省 漳州市 zhangzhou
广东省 湛江市 zhanjiang
黑龙江省 肇东市 zhaodong
广东省 肇庆市 zhaoqing
云南省 昭通地区 zhaotong
河南省 郑州市 zhengzhou
江苏省 镇江市 zhenjiang
辽宁省 中山区 zhongshan
河南省 周口市 zhoukou
浙江省 舟山市 zhoushan
山东省 诸城市 zhucheng
广东省 珠海市 zhuhai
浙江省 诸暨市 zhuji
河南省 驻马店地区 zhumadian
湖南省 株洲市 zhuzhou
山东省 淄博市 zibo
四川省 自贡市 zigong
贵州省 遵义市 zunyi
新疆省 乌鲁木齐市 wulumuqi
福建省 福清市 fuqing
湖北省 鄂州市 ezhou
内蒙古 包头市 baotou
浙江省 萧山市 xiaoshan
河北省 宣化区 xuanhua
四川省 江油市 jiangyou
湖南省 资阳区 ziyang
河北省 辛集市 xinji
广东省 佛山市 foshan
重庆市 万州区 wanzhou
山东省 邹城市 zoucheng
福建省 邵武市 shaowu
江苏省 姜堰市 jiangyan
湖南省 湘阴县 xiangyin
上海市 松江区 songjiang
黑龙江省 七台河市 qitaihe
湖南省 醴陵市 liling
重庆市 涪陵区 fuling
吉林省 公主岭市 gongzhuling
安徽省 歙县 shexian
江苏省 兴化市 xinghua
import requests
from bs4 import BeautifulSoup
from Weather import IO as ios


class item:
    def __init__(self):
        self.date = list()  # 日期
        self.max_temp = list()  # 最高温
        self.min_temp = list()  # 最低温
        self.weather = list()  # 天气
        self.wind_direction = list()  # 风向
        self.wind_force=list()  # 风力


Data_Box = item()  # 数据盒子


# 函数默认返回北京市2018年1月到12月的url
def get_url(city):
    '''
    city为城市拼写的字符串,year为年份+月份
    '''
    for i in range(2020,2021):
        for time in range(int(str(i)+"01"), int(str(i)+"13")):
            url = "http://lishi.tianqi.com/{}/{}.html".format(city, time)
            yield url+" "+city


# 获取天气数据
def get_datas():
    num=0
    for line in open("CityEn_Deal.txt",encoding='utf-8'):
        print(str(line.split(" ")[1]).strip("
"))
        urls = get_url(str(line.split(" ")[2]).strip("
"))
        cookie = {
            "cityPy": "UM_distinctid=171f2280ef23fb-02a4939f3c1bd4-335e4e71-144000-171f2280ef3dab; Hm_lvt_ab6a683aa97a52202eab5b3a9042a8d2=1588905651; CNZZDATA1275796416=871124600-1588903268-%7C1588990372; Hm_lpvt_ab6a683aa97a52202eab5b3a9042a8d2=1588994046"}
        header = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400"}
        for url in urls:
            try:
                html = requests.get(url=url.split(" ")[0], headers=header, cookies=cookie)
                soup = BeautifulSoup(html.text, 'html.parser')
                ul = soup.find_all("ul", class_='thrui')[0]
                # print(ul)
                lis = ul.find_all("li")[:-1]
                for li in lis:
                    # 最后一个li标签不是天气数据
                    div = li.find_all("div")
                    Data_Box.date.append(div[0].text.split("-")[0]+div[0].text.split("-")[1]+div[0].text.split("-")[2])
                    Data_Box.max_temp.append(div[1].text)
                    Data_Box.min_temp.append(div[2].text)
                    Data_Box.weather.append(div[3].text)
                    Data_Box.wind_direction.append(div[4].text.split(" ")[0])
                    Data_Box.wind_force.append(div[4].text.split(" ")[1])
            except:
                print("该页面爬取失败!")

            else:
                print("该页面爬取成功!")
            try:
                for i in range(num, len(Data_Box.date)):
                    print(str(line.split(" ")[0]),str(line.split(" ")[1]),url.split(" ")[1],Data_Box.date[i],  Data_Box.min_temp[i],Data_Box.max_temp[i], Data_Box.weather[i],
                          Data_Box.wind_direction[i],Data_Box.wind_force[i])
                    ios.cw("weather2020.txt",str(line.split(" ")[0])+" "+str(line.split(" ")[1])+" "+Data_Box.date[i]+Data_Box.date[i]+Data_Box.min_temp[i].split("")[0]+" "+Data_Box.max_temp[i].split("")[0]+" "+Data_Box.weather[i]+" "+
                          Data_Box.wind_direction[i].split("")[0]+" "+Data_Box.wind_force[i].split("")[0]+"
")
                    num=len(Data_Box.date)
            except:
                print("写入失败!")
                ios.cw("Fault.txt",str(line.split(" ")[1]+"写入失败"))
    return "数据获取完毕"


# 爬取程序主函数
if __name__ == "__main__":
    get_datas()
原文地址:https://www.cnblogs.com/zlc364624/p/14247547.html