2021.02.04——用爬虫爬取nga ow区1-10页的帖子并生成词云图

前言

最近在学习爬虫的相关知识,思考做一个案例,平常nga ow区逛的也挺多,就爬取一下前10页帖子的标题,并以此生成词云图吧!

查阅相关链接

词云的简单实现
爬取网站多页数据实现方法
静态爬取方法

代码

import requests
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import os

path = 'topic.txt'
if os.path.exists(path):
    os.remove(path)

for page in range(10):                                              #提取前10页的标题,此处用for构建10次
    url = 'https://bbs.nga.cn/thread.php?fid=459&page=%s' %page     #构建url,nga的url很规律,就是page=某个数字就代表第几页
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
    }                                                               #构建浏览器的请求头,不管网站是否需要,构建了总没坏处
    cookie = "这个我不能贴在这里233,浏览器f12获取就可以了"
                                                                    #从网页源码内原封不动贴来的cookie
    cookie_dict = {i.split("=")[0]:i.split("=")[-1] for i in cookie.split("; ")}
                                                                    #把cookie转换为字典形式
    r = requests.get(url, headers=headers,cookies = cookie_dict)    #获取网页源码
    soup = BeautifulSoup(r.text, 'lxml')                            #用bs4的lxml库解析源码

    for each in soup.find_all('tbody'):                             #查看源码,可以知道我们要的标题都在tbody标签下,用for循环,find_all函数去找到所有的tbody标签
        title = each.find('a',class_ = 'topic').get_text(strip=True)#查看源码,可以知道我们要的标题都是tbody标签下的a子标签,class为topic
                                                                    #的标签,即为想要的标题,用get_text函数获取文本,strip去除没有必要的空格
        file = open('topic.txt','a',encoding='utf-8')               #打开topic.txt,没有则创建一个
        file.write('\n'.join([title]))                              #将刚刚获取的标题写入txt,并换行
        file.write('\n')
        file.close()


word = open('topic.txt','r',encoding='utf-8').read()                #打开topic.txt,此时里面已有1-10页的标题
word = " ".join(jieba.cut(word))                                    #用jieba分词,将成句的句子分成词

image_path = 'ow.png'                                               #设定词云图片
mask_image = np.array(Image.open(image_path))

stop_words = ["月","日","我","有没有","怎么","了","么","的","是"     #设定不用的词
    ,"吗","现在","你们","有","个","这个","打","玩","游戏","都"]

wordcloud = WordCloud(background_color="white",width=1000,          #设置词云图属性
                      height=860, margin=2,font_path="simhei.ttf",
                      stopwords = stop_words,mask=mask_image).generate(word)


plt.imshow(wordcloud, interpolation='bilinear')                     #画词云图
plt.axis("off")
plt.show()

成果

在这里插入图片描述

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值