<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 爬取「奔跑吧」全系列嘉賓名單,并進(jìn)行可視化分析

          共 5549字,需瀏覽 12分鐘

           ·

          2021-05-11 21:44

          今天分析『奔跑吧』全系列的嘉賓名單,分析每位嘉賓參加次數(shù)(可能有的嘉賓參加過幾季),以及統(tǒng)計嘉賓職業(yè)類型個數(shù),最后進(jìn)行可視化展示分析。


          1

          網(wǎng)頁分析


          通過網(wǎng)上查詢,知道『奔跑吧』到目前為止一共9季,先是奔跑吧兄弟1~4,到后面改名為奔跑吧1~4,以及奔跑吧黃河篇。


          對應(yīng)的網(wǎng)頁鏈接如下:

          url_list=[    'https://baike.baidu.com/item/奔跑吧兄弟第一季#4_2',    'https://baike.baidu.com/item/奔跑吧兄弟第二季/16414779',    'https://baike.baidu.com/item/奔跑吧兄弟第三季',    'https://baike.baidu.com/item/奔跑吧兄弟第四季',    'https://baike.baidu.com/item/奔跑吧第一季/20433390?fromtitle=奔跑吧第1季&fromid=22645259&fr=aladdin#4_2',    'https://baike.baidu.com/item/奔跑吧第二季/22421345?fromtitle=奔跑吧第2季&fromid=22645247&fr=aladdin#4_2',    'https://baike.baidu.com/item/奔跑吧第三季/23284990?fromtitle=奔跑吧第3季&fromid=23285732&fr=aladdin',    'https://baike.baidu.com/item/奔跑吧第四季/24701671?fromtitle=奔跑吧第4季&fromid=50003758&fr=aladdin',    'https://baike.baidu.com/item/奔跑吧·黃河篇/53052048']

          1.分析網(wǎng)頁結(jié)構(gòu)

          首先以奔跑吧第1季為例去分析網(wǎng)頁結(jié)構(gòu)(其他的鏈接網(wǎng)頁結(jié)構(gòu)一樣)




          咱們主要是爬取嘉賓姓名和明星類型(演員、歌手等)



          本來想通過xpath解析網(wǎng)頁方式去定位數(shù)據(jù),但是發(fā)現(xiàn)定位不到,所以就采取了另外一種方式:字符串截取(其實正則re也可以,有很多種方式,只要能夠解析出來即可,大家可以自由發(fā)揮)





          截取前后分別是:分期嘉賓、表演嘉賓


          2

          獲取數(shù)據(jù)


          首先導(dǎo)入相應(yīng)的庫

          import requestsfrom lxml import etreeimport jsonimport timeimport openpyxl


          將9季的網(wǎng)頁鏈接放到集合中url_list,同時定義name存放嘉賓名字,types是明星類型(歌手、演員等)


          ### 姓名name = []### 明星類型types = []url_list=[    'https://baike.baidu.com/item/奔跑吧兄弟第一季#4_2',    'https://baike.baidu.com/item/奔跑吧兄弟第二季/16414779',    'https://baike.baidu.com/item/奔跑吧兄弟第三季',    'https://baike.baidu.com/item/奔跑吧兄弟第四季',    'https://baike.baidu.com/item/奔跑吧第一季/20433390?fromtitle=奔跑吧第1季&fromid=22645259&fr=aladdin#4_2',    'https://baike.baidu.com/item/奔跑吧第二季/22421345?fromtitle=奔跑吧第2季&fromid=22645247&fr=aladdin#4_2',    'https://baike.baidu.com/item/奔跑吧第三季/23284990?fromtitle=奔跑吧第3季&fromid=23285732&fr=aladdin',    'https://baike.baidu.com/item/奔跑吧第四季/24701671?fromtitle=奔跑吧第4季&fromid=50003758&fr=aladdin',    'https://baike.baidu.com/item/奔跑吧·黃河篇/53052048']


          開始請求數(shù)據(jù)

          ### 循環(huán)遍歷for u in url_list:  url = u  print(url)  res = requests.get(url,headers=headers)  res.encoding = 'utf-8'  text = res.text  sp1 = text.split("參與期數(shù)")[1].split("表演嘉賓")[0]  selector = etree.HTML(sp1)  tr_list = selector.xpath('.//tr')  tr_list = tr_list[1:]  ###名字  for i in tr_list:      #print(i.xpath(".//div[@class='para']/b/a/text()")[0])      name.append(i.xpath(".//div[@class='para']/b/a/text()")[0])  ### 明星類型  for i in tr_list:      te = i.xpath(".//div[@class='para']/text()")[0]      te = te.split(",")[0].replace("(","")      #print(te)      types.append(te) print(name)print(types)print(len(name))print(len(types))



          保存數(shù)據(jù)(excel)

          outwb = openpyxl.Workbook()outws = outwb.create_sheet(index=0)outws.cell(row=1, column=1, value="名字")outws.cell(row=1, column=2value="明星類型")for i in range(0,len(name)):    outws.cell(row=i+2, column=1value=str(name[i]))    outws.cell(row=i+2, column=2, value=str(types[i]))outwb_p.save("奔跑吧嘉賓名單-李運辰.xls")  # 保存




          3

          可視化分析

          1.統(tǒng)計每一位嘉賓參加次數(shù)排名(取前15)

          首先讀取excel中數(shù)據(jù),其中名字(第一列)存放在name變量中,明星類型(第二列)存放在types變量中。

          data = pd.read_excel("奔跑吧嘉賓名單-李運辰.xls")name = data['名字'].tolist()types = data['明星類型'].tolist()



          然后對name,嘉賓名字進(jìn)行個數(shù)(參加過多少次)統(tǒng)計排名(取前15)

          # 排序方法from collections import Counter# 排序d = sorted(result.items(), key=lambda x: x[1], reverse=True)name_key = [d[i][0] for i in range(0,16)]value = [d[i][1] for i in range(0,16)]print(name_key)print(value)



          進(jìn)行可視化展示


          導(dǎo)入相關(guān)的庫

          ### 畫圖from pyecharts import options as optsfrom pyecharts.globals import ThemeTypefrom pyecharts.charts import Barfrom pyecharts.charts import Pie


          繪圖代碼

          # 鏈?zhǔn)秸{(diào)用    c = (        Bar(            init_opts=opts.InitOpts(  # 初始配置項                theme=ThemeType.MACARONS,                animation_opts=opts.AnimationOpts(                    animation_delay=1000, animation_easing="cubicOut"  # 初始動畫延遲和緩動效果                ))        )            .add_xaxis(xaxis_data=name_key)  # x軸            .add_yaxis(series_name="統(tǒng)計每一位嘉賓參加次數(shù)排名(取前15)", y_axis=values)  # y軸            .set_global_opts(            title_opts=opts.TitleOpts(title='', subtitle='',  # 標(biāo)題配置和調(diào)整位置                                      title_textstyle_opts=opts.TextStyleOpts(                                          font_family='SimHei', font_size=25, font_weight='bold', color='red',                                      ), pos_left="90%", pos_top="10",                                      ),            xaxis_opts=opts.AxisOpts(name='嘉賓', axislabel_opts=opts.LabelOpts(rotate=45)),            # 設(shè)置x名稱和Label rotate解決標(biāo)簽名字過長使用            yaxis_opts=opts.AxisOpts(name='次數(shù)'),
          ).render("統(tǒng)計每一位嘉賓參加次數(shù)排名(取前15).html") )



          從圖中可以看到,參加奔跑吧節(jié)目最多的嘉賓是:林更新(3次),其他的最多的次數(shù)是兩次。

          2.嘉賓職業(yè)類型統(tǒng)計



          從嘉賓(明星)類型中可以大概知道有這么幾類(演員、歌手、主持人、模特、主持人、運動員、舞者、制片人、賽車手、經(jīng)紀(jì)


          開始統(tǒng)計以上這幾種職業(yè)類型的個數(shù)


          ### 嘉賓職業(yè)類型    name = ['演員','歌手','主持人','模特','主持人','運動員','舞者','制片人','賽車手','經(jīng)紀(jì)人']    ### 初始化為0    value = [0,0,0,0,0,0,0,0,0,0]    for i in types:        for j in range(0,len(name)):            if name[j] in i:                value[j] = value[j] +1    print(name)    print(value)



          開始繪圖

          pie = Pie("嘉賓職業(yè)類型統(tǒng)計",title_pos='center')pie.add(    "",    name,    value,    radius=[40, 75],    label_text_color=None,    is_label_show=True,    is_more_utils=True,    legend_orient="vertical",    legend_pos="left",)pie.render(path="嘉賓職業(yè)類型統(tǒng)計.html")



          從統(tǒng)計圖來看,嘉賓中職業(yè)最多的是演員,其次是歌手。



          4

          小結(jié)


          今天分析『奔跑吧』全系列的嘉賓名單,分析每位嘉賓參加次數(shù)(可能有的嘉賓參加過幾季),以及統(tǒng)計嘉賓職業(yè)類型個數(shù),最后進(jìn)行可視化展示分析。


          更多閱讀



          用 Python 進(jìn)行 OCR 圖像識別


          用 XGBoost 進(jìn)行時間序列預(yù)測


          5 分鐘快速上手 pytest 測試框架

          特別推薦




          點擊下方閱讀原文加入社區(qū)會員

          瀏覽 110
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清无码视频在线看 | 国产嫩草影院久久久久 | 成人Av无码一区二区三区 | аⅴ天堂中文在线网 | 久久午夜影院 |