爬虫实战(1)——爬取中国天气网并进行简单可视化

import requests
from bs4 import BeautifulSoup
from pyecharts.charts import Bar

from pyecharts import options as opts

ALL_data=[]

def parse_url(url):
    headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
    response=requests.get(url,headers=headers)
    text=response.content.decode("utf-8")
    soup=BeautifulSoup(text,'html5lib')#html5lib容错性很强
    divs=soup.find("div",class_="conMidtab")
    tables=divs.find_all("table")
    #print(tables)
    for table in tables:
        trs=table.find_all("tr")[2:]
        for index,tr in enumerate(trs):

            tds=tr.find_all("td")
            if index == 0:
                city_name=tds[1]
                city=list(city_name.stripped_strings)[0]
            else:
                city_name=tds[0]
                city=list(city_name.stripped_strings)[0]
            temp=tds[-2]
            min_temp=list(temp.stripped_strings)[0]
            ALL_data.append({'city':city,'min_temp':int(min_temp)})





def main():
    urls=["http://www.weather.com.cn/textFC/gat.shtml#",
         "http://www.weather.com.cn/textFC/hb.shtml#",
         "http://www.weather.com.cn/textFC/db.shtml#"]
    for url in urls:

        parse_url(url)
    ALL_data.sort(key=lambda data:data['min_temp'])

    data=ALL_data[0:10]
    cities=list(map(lambda x:x['city'],data))
    temps=list(map(lambda x:x['min_temp'],data))
    bar = (
        Bar()
            .add_xaxis(cities)
            .add_yaxis('',temps)
            .set_global_opts(title_opts=opts.TitleOpts(title="中国天气最低气温排行"))
    )
    bar.render("weather.html")



main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值