美文网首页linux运维
python爬虫-15-使用python爬取中国天气,然后将最低

python爬虫-15-使用python爬取中国天气,然后将最低

作者: 运维家 | 来源:发表于2022-05-31 10:50 被阅读0次

    学以致用,我们这次使用BeautifulSoup模块,来爬取下中国天气网的天气信息,然后取出最低气温进行排序,并使用pyecharts绘图模块,进行图形的绘制。

    1、爬取流程梳理

    (1)整体定位

    首先我们要知道爬取的是哪个界面,界面的样式是什么;

    (2)范围定位

    我们需要爬取的是,每一个地区的下面省份天气;

    (3)大致定位

    每一个省份都划分成多个地区,或者多个市,我们需要依次来获取;

    (4)准确定位

    当我们获取之后,截取里面的城市、最低气温

    2、代码书写

    (1)整体定位

    获取整个页面的代码;

    import requests

    Header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }


    def Requ_page(self_Url):
        Page_Html = requests.get(self_Url, headers=Header)
        print(Page_Html.content.decode('utf-8'))


    def main():
        Url = 'http://www.weather.com.cn/textFC/hb.shtml'
        Requ_page(Url)


    if __name__ == '__main__':
        main()

    输出结果如下:

    (2)范围定位

    获取我们需要的代码,去掉那些抬头和结尾;

    代码如下:

    import requests
    from bs4 import BeautifulSoup

    Header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }


    def Requ_page(self_Url):
        Page_Html = requests.get(self_Url, headers=Header)
        One_Html = Page_Html.content.decode('utf-8')
        Two_Html = BeautifulSoup(One_Html, 'html5lib')
        Three_Htmls = Two_Html.find('div', attrs={'class': 'conMidtab'})
        Tables = Three_Htmls.find_all('table')
        for Table in Tables:
            print(Table)
            print("="*20)


    def main():
        Url = 'http://www.weather.com.cn/textFC/hb.shtml'
        Requ_page(Url)


    if __name__ == '__main__':
        main()

    输出结果如下:

    (3)大致定位

    在我们获取到数据之后,筛选出来每一个城市的数据;

    由于个tr中的信息不是我们所需要的,所以我们从第三个开始获取,代码如下:

    import requests
    from bs4 import BeautifulSoup

    Header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }


    def Requ_page(self_Url):
        Page_Html = requests.get(self_Url, headers=Header)
        One_Html = Page_Html.content.decode('utf-8')
        Two_Html = BeautifulSoup(One_Html, 'html5lib')
        Three_Htmls = Two_Html.find('div', attrs={'class': 'conMidtab'})
        Tables = Three_Htmls.find_all('table')
        for Table in Tables:
            Trs = Table.find_all('tr')[2:]
            for index, tr in enumerate(Trs):
                tds = tr.find_all('td')
                print(tds)
                print('=' * 30)


    def main():
        Url = 'http://www.weather.com.cn/textFC/hb.shtml'
        Requ_page(Url)


    if __name__ == '__main__':
        main()

    输出结果如下:

    (4)准确定位

    我们需要从中获取到城市、最低气温,并进行轮训,故而代码如下:

    import requests
    from bs4 import BeautifulSoup

    Header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }

    ALL_DATA = []


    def Requ_page(self_Url):
        Page_Html = requests.get(self_Url, headers=Header)
        One_Html = Page_Html.content.decode('utf-8')
        Two_Html = BeautifulSoup(One_Html, 'html5lib')
        Three_Htmls = Two_Html.find('div', attrs={'class': 'conMidtab'})
        Tables = Three_Htmls.find_all('table')
        for Table in Tables:
            Trs = Table.find_all('tr')[2:]
            for index, tr in enumerate(Trs):
                tds = tr.find_all('td')
                city_td = tds[0]
                if index == 0:
                    city_td = tds[1]
                city = list(city_td.stripped_strings)[0]
                temp_td = tds[-2]
                min_temp = list(temp_td.stripped_strings)[0]
                ALL_DATA.append({"city": city, "min_temp": int(min_temp)})


    def main():
        Urls_List = [
            'http://www.weather.com.cn/textFC/hb.shtml',
            'http://www.weather.com.cn/textFC/db.shtml',
            'http://www.weather.com.cn/textFC/hd.shtml',
            'http://www.weather.com.cn/textFC/hz.shtml',
            'http://www.weather.com.cn/textFC/hn.shtml',
            'http://www.weather.com.cn/textFC/xb.shtml',
            'http://www.weather.com.cn/textFC/xn.shtml',
            'http://www.weather.com.cn/textFC/gat.shtml'
        ]
        for i in Urls_List:
            Requ_page(i)


    if __name__ == '__main__':
        main()

    print(ALL_DATA)

    输出结果如下(篇幅原因,仅展示部分内容):

    [{'city': '北京', 'min_temp': 14}, {'city': '海淀', 'min_temp': 14}, {'city': '朝阳', 'min_temp': 16}, {'city': '顺义', 'min_temp': 15}, {'city': '怀柔', 'min_temp': 14}, {'city': '通州', 'min_temp': 14}, {'city': '昌平', 'min_temp': 16}

    至此,我们使用python代码爬取中国天气网,来获取城市和最低气温的代码就完事儿了,但是我们是不是可以稍微展示一下呢,往下看。

    3、结果展示

    这里我们使用到了一个pyecharts库,感兴趣的同学可以去github上看下,地址如下:

    https://pyecharts.org/#/

    完整代码如下:

    剩余内容请转至VX公众号 “运维家” ,回复 “177” 查看。

    ------ “运维家” ,回复 “177”  ------

    ------ “运维家” ,回复 “177”  ------

    ------ “运维家” ,回复 “177”  ------

    linux系统下,mknodlinux,linux目录写权限,大白菜能安装linux吗,linux系统创建文件的方法,领克linux系统怎么装软件,linux文本定位;

    ocr识别linux,linux锚定词尾,linux系统使用记录,u盘有linux镜像文件,应届生不会Linux,linux内核64位,linux自启动管理服务;

    linux计算文件夹大小,linux设备名称有哪些,linux能用的虚拟机吗,linux系统进入不了命令行,如何创建kalilinux,linux跟so文件一样吗。

    相关文章

      网友评论

        本文标题:python爬虫-15-使用python爬取中国天气,然后将最低

        本文链接:https://www.haomeiwen.com/subject/ukhzprtx.html