1. 程式人生 > >爬蟲+詞雲:爬取豆瓣電影top100的導演制作圖雲

爬蟲+詞雲:爬取豆瓣電影top100的導演制作圖雲

ray 爬取 open tex 下載頁面 down app zhong form

前段時間做了一個關於豆瓣電影的爬蟲,之後又寫了一個陳奕迅歌詞的詞雲制作,於是我想不如做一個關於豆瓣高分電影導演的詞雲試試,於是有了接下來這篇隨筆。

首先,我需要知道豆瓣top100電影詳情頁面的url,以便爬取對應導演。在豆瓣電影top250界面

def get_urls(self):
        while(self.page<4):
            #得到當前頁面的url
            url = self.cur_url.format(page = self.page*25)

            #獲取當前頁面所有內容
            text = self.Downloader.download(url)

            
#將下載頁面進行解析得到需要的url urls = self.Parser.get_urls(text) #將當前獲取的url加入url管理器中 self.URL_manager.add_urls(urls) #繼續下一頁的url添加 self.page += 1

在得到top100電影詳情界面的url之後,需要對這些詳情頁面下載,然後進行解析,我使用的是beautiulsoup,得到需要的導演名字。

def craw(self):
        print("開始搜集導演信息
") datas = list() titles = list() #data = list() num = 0 while self.URL_manager.has_new_url(): try: #獲取一個電影詳情頁面的url url = self.URL_manager.get_url() #將這個頁面下載 text = self.Downloader.download(url)
#對這個頁面進行解析,獲得需要的內容 data= self.Parser.get_datas(text) for item in data: datas.append(item) #titles.append(title) print("top %d:%s"%(num,item)) num += 1 except: print("craw failed!") #將數據存入本地 self.Outputer.save(datas) print("done")

爬蟲部分的內容差不多了,接下來要做的就是對爬取的數據進行分析,得到詞雲

import wordcloud
from PIL import Image
import numpy as np
import jieba
import jieba.analyse
from matplotlib import pyplot as plt

class WC_dires(object):
    """docstring for WC_dirs"""
    def __init__(self):
        self.path = r"F:/Python_Program/douban/director/spider/directors.txt"

    def Read_text(self):
        lyric = ‘‘
        try:
            f = open(self.path,r)
            lyric = f.read()
            return lyric
        except:
            print("open file error!")
            return None
        finally:
            f.close()

    def Analyse(self,text):
        results = jieba.analyse.extract_tags(text,topK = 100)
        return results


    def Draw(self,results):
        image = np.array(Image.open(rF:/Python_Program/douban/director/dires.png))
        wc = wordcloud.WordCloud(background_color = white,max_words = 100,mask = image,stopwords = wordcloud.STOPWORDS,font_path = C:\Windows\Fonts\STZHONGS.TTF)
        cut_results = " ".join(results)
        wc.generate(cut_results)
        plt.figure()
        plt.imshow(wc)
        plt.axis("off")
        plt.show()

def main():
    we = WC_dires()
    text = we.Read_text()
    data = we.Analyse(text)
    #for item in data:
    #    print(item)
    we.Draw(data)

if __name__ == "__main__":
    main()

附上github上的源碼

爬蟲+詞雲:爬取豆瓣電影top100的導演制作圖雲