怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计

简介

众所周知,怪物猎人世界这一款游戏,是一款模拟仿真按摩游戏

在一个拥有各种强大生物的新大陆上,由于自然资源紧张,各种怪物之间的矛盾频发,此时玩家所扮演的按摩师,需要通过自己精湛的按摩技巧和装备工具,以及强大的aibo的帮助下,使用修脚,撮背,加特林特技按摩等技术,使怪物达到爽翻的状态,成功之后,怪物会休息,并发自内心的感谢玩家并赠送龙玉等物品。

最终达到人、怪物、动物的和谐发展,这是一款非常具有正能量的游戏。

在按摩过程中,选择正确的aibo(伙伴),也是很重要的。
怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第1张图片

其中某些怪物由于太舒服了还会高兴的表演甩尾,“龙车”,“如来神掌”等绝技,以表达对按摩师的感谢。
怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第2张图片

龙车

怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第3张图片
如来神掌

额…应该是这张
怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第4张图片
真正的如来神掌

那么,问题来了,目标是神奇怪物大师的技师们,是怎么选择自己的武器呢?,这篇文章,笔者带你揭晓,到底哪把武器才是技师们的最爱。

0x00 爬取前的准备

与我上篇的blog一致
本次爬取的方法比较简单,不需要安装seletium,只需要有BeautifulSoup和requests package就行。

BeautifulSoup 安装方法参考blog:

BeautifulSoup 安装方法

0x01 爬取思路

首先,我们要明确我们爬取的对象,那就是著名水贴聚集地----贴吧

我们的目标,就是找到贴吧帖子的主题,并统计其中出现武器的频率,作为我们统计热度的参考。

怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第5张图片

这篇中,贴子主题、链接、发帖人、发帖时间、发帖数量等数据的爬取参考知乎作者Echo的文章
https://zhuanlan.zhihu.com/p/26722495
详细爬取思路可进入原作者文章查看,本文就简单的介绍一下。

0x02 爬取代码实现

首先,1 爬取需要所需要数量帖子的url

base_url = 'https://tieba.baidu.com/f?kw=%E6%80%AA%E7%89%A9%E7%8C%8E%E4%BA%BA%E4%B8%96%E7%95%8C&ie=utf-8'
    deep = 3
url_list = []
    for i in range(0,deep):
        url_list.append(base_url + '&pn=' + str(i*50))

2 再使用此函数获取url内的html,用于BS4解析

def get_html(url):
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = "utf-8"
        return r.text
    except:
        return "error"

3 使用BS4解析url,找到标题,链接,发帖人,时间以及回复数量

def get_content(url):
    comments = []
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    # 找到每一个主题贴
    liTags = soup.find_all('li', attrs={'class': ' j_thread_list clearfix'})
    # print (liTags)
    for li in liTags:
        # 初始化一个字典用存储
        comment = {}
        try:
            comment['title'] = li.find(
            'a', attrs={'class':'j_th_tit'}).text.strip()
            comment['link'] = "http://tie.baidu.com/" + \
                li.find('a', attrs = {'class':'j_th_tit'})['href']
            comment['name'] = li.find(
                'span', attrs = {'class': 'tb_icon_author'}).text.strip()
            comment['time'] = li.find(
                'span', attrs = {'class':'pull-right is_show_create_time'}).text.strip()
            comment['replyNum'] = li.find(
            'span', attrs={'class': 'threadlist_rep_num center_text'}).text.strip()
            comments.append(comment)
        except:
            print ('Some problem happened!')
    return comments

4 将爬取结果存入文件

def out2file(dict):
    with open('TB.txt','a+',encoding='utf-8') as f:
        for comment in dict:
            f.write('标题: {} \t 链接:{} \t 发帖人:{} \t 发帖时间:{} \t 回复数量: {} \n'.format(
                comment['title'], comment['link'], comment['name'], comment['time'], comment['replyNum']))

至此,我们已经爬取了指定页数的“标题,链接,发帖人,时间以及回复数量”信息,而接下来的目标,就是解析主题贴主题中的关键字,再进行统计。

怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第6张图片

5 初始化要使用的全局变量,其中weapons里,记录了所有武器的官方称呼和俗称(可能不全)

def data_init():
    global weapons
    global weapon_count
    # all weapon
    weapons = ['单手剑|片手剑', '双手剑|双刀|双剑', '大剑|重剑', \
               '太刀', '锤|锤子', '狩猎笛|笛子', '长枪', '铳枪', \
               '斩击斧|剑斧', '充能斧|盾斧', '操虫棍|棍|棍子', \
               '弓', '轻弩', '重弩']
    # init weapon count
    for weapon in weapons:
        weapon_count.update({weapon: 0})
    print(weapon_count)

6 使用re解析帖子主题,统计关键字并打印

def keyword_count(dict,page):
    global weapons
    global weapon_count
    for weapon in weapons:
        count = 0;
        for comment in dict:
            count = count + len(re.findall(weapon, comment['title']))
        weapon_count.update({weapon : (weapon_count[weapon]+count)})
    print("第%d页结果汇总:" % (page+1))
    print(weapon_count)

至此,我们的目的已经达到了,笔者测试了一下,结果如图

怪物猎人世界哪把武器最热门?数据挖掘练习-其二 python爬取MHW贴吧主题并统计_第7张图片

可以发现,太刀和弓武器是猎人技师们最爱的工具了,而锤、重弩、铳枪、单手剑的提及率很低,甚至斩击斧是0,这可能是笔者关键词设置的不够多,或者是玩这个武器的都是hard core player吧。

PS:锤子用的人这么少吗?斜坡神教已经没落了吗?

本次练手的小项目就到这里了,感谢echo作者提供的灵感,欢迎大家进行测试和指出文中的错误~

最后祝愿各位技师,猫车一路顺风。

下一个练手小项目应该不会是爬虫,向下一个阶段(数据分析,语言处理或者特征目标检测)进发.

源码github链接:https://github.com/gangyu0716/spider_project

作者blog地址:https://blog.csdn.net/nurke

你可能感兴趣的:(Python,Linux,AI,python,爬虫,怪物猎人世界)