Synchnorized Markdown RabbitMQ Java中高进阶架构 flash serialization websocket jq获取第一个子元素 js鼠标离开事件 js对象添加元素 idea格式化代码设置 mysql配置远程连接 python迭代器 二分查找python python循环10次 java入门教程 java自定义异常 java获取文件大小 java中instanceof java数组排序 javascript基础 js选项卡 tar文件怎么打开 dll文件下载 倒计时计时器 脚本之家官网 脚本 2700U 小度音箱app ps怎么画漫画 java表白代码 视频添加水印 html5制作 现代操作系统 ipad上市时间 迅雷单机游戏下载 燃烧之血十字架 三星打印机怎么加墨 wps苹果mac版 汉仪旗黑字体下载
当前位置: 首页 > 学习教程  > python

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

2021/2/7 9:55:07 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

前言 最近在学习爬虫的相关知识,思考做一个案例,平常nga ow区逛的也挺多,就爬取一下前10页帖子的标题,并以此生成词云图吧! 查阅相关链接 词云的简单实现 爬取网站多页数据实现方法 静态爬取方法 代码 import req…

前言

最近在学习爬虫的相关知识,思考做一个案例,平常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()

成果

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_2000196.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?