首页 > 其他 > 详细

TED-WordCloud: 4000+视频标题词云分析

时间:2020-01-16 10:59:24      阅读:90      评论:0      收藏:0      [点我收藏+]

这是一次爬虫尝试,涵盖TED到目前为止共4000+视频标题的提取,结果以文本格式存储,然后使用wordcloud词云库,生成可视化的云图。

技术分享图片

TED演讲是啥?

官网地址:https://www.ted.com/

TED(指technology, entertainment, design在英语中的缩写,即技术、娱乐、设计)是美国的一家私有非营利机构,该机构以它组织的TED大会著称,这个会议的宗旨是“值得传播的创意”。

这个演讲主要集中在用思想的力量来改变世界。如今已经累积有4000多条视频,每位讲述者或令人印象深刻、或激情拍好、或感人心灵。算是当下世界共享mooc学习的先锋,视频一般都会带上多国翻译字幕,既可以学习,又可以感知内容。

具体实现步骤

第一步:爬取整站点视频标题,使用多线程,耗时15s即可完成。

from requests_html import HTMLSession
import threading #多进程
import time
import _thread

base_url = https://www.ted.com/talks?page=
session = HTMLSession()

headers = {
    User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
}

def page_num():
    url = https://www.ted.com/talks
    r = session.get(url, headers=headers)
    res = r.html.find(a.pagination__item.pagination__link)
    num = []
    for x in res:
        num.append(x.text)
    return num[-1]


def get_title(i):
    global id #在函数内部修改全局变量的值,要先用global声明全局变量。
    url = base_url + str(i)
    #print(url)
    r = session.get(url, headers=headers)
    #r.html.render(scrolldown=3, sleep=0.01)  #下拉3次,这里函数不能用在多线程中
    titles = r.html.find(h4 a.ga-link)
    with open(titles.txt, a, encoding="utf-8") as f:  #使用utf-8编码
        for title in enumerate(titles):
            s = f{title.text}
            print(s)
            f.write(s + \n)


def main():
    total_page = int(page_num())
    print(f总共有{total_page} 页)
    threads = []    #进程列表
    for i in range(1, total_page+1):
        #get_title(str(i))
        t = threading.Thread(target=get_title,args=(i,))  #每个页面启动一个新的线程
        #t.start()   #也可以在这里直接start
        threads.append(t)

    for t in threads:
        t.start()   #依次启动所有进程
        
    for t in threads:
        t.join()


if __name__ == __main__:
    start = time.time()
    main()
    end = time.time()
    print(f总共耗时:%d 秒 %(end - start))

运行后,同级目录下生成title.txt

第二步:词云生成

from wordcloud import WordCloud

f = open(utitles.txt,r, encoding="utf-8").read()
wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)
wordcloud.to_file(titles.png)

运行后,在同级目录生成title.png

总结

虽然完整的完成了功能,但是没有使用正则查找(借助了requests_html库),也没能实现进度条。

 

 

参考链接:https://baiyue.one/archives/1526.html

TED-WordCloud: 4000+视频标题词云分析

原文:https://www.cnblogs.com/lfri/p/12199901.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!