zoukankan      html  css  js  c++  java
  • [Python]网络爬虫 爬取天气数据、城市、日温度、风向、风力、天气

    结果:

    代码如下:

    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()

    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

    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")  # 以追加的方式
  • 相关阅读:
    Android Studio “Project Structure”选项目录结构显示异常
    Android 不通过USB数据线调试的方法
    Android OpenGL ES 开发教程 从入门到精通
    Android NIO(Noblocking I/O非阻塞I/O)小结
    phpStudy3——往数据库中添加数据
    phpStudy2——PHP脚本访问MySql数据库
    phpStudy1——PHP文件获取html提交的参数
    php页面的基本语法
    安装使用phpStudy在本机配置php运行环境
    运行php网站需要安装什么
  • 原文地址:https://www.cnblogs.com/zlc364624/p/14224140.html
Copyright © 2011-2022 走看看