python爬取虎扑评论_python-2:爬取某个网页(虎扑)帖子的标题做词云图

本文介绍了如何使用Python的requests和BeautifulSoup库爬取虎扑Acg区的帖子标题,通过jieba分词处理后,利用wordcloud绘制词云图。首先,通过循环请求获取网页,然后解析HTML提取标题,接着使用jieba进行分词和去停用词操作,最后生成词云图。在分析过程中,作者发现存在无关词过多的问题,并提出需要自定义停用词表进行优化。
摘要由CSDN通过智能技术生成

关键词:requests,BeautifulSoup,jieba,wordcloud

整体思路:通过requests请求获得html,然后BeautifulSoup解析html获得一些关键数据,之后通过jieba分词对数据进行切分,去停,最后通过wordcloud画词云图

1、请求虎扑Acg区

从这里可以得知,如果我们要请求多个网页,只需要以首页作为基础url,后面的每一页在首页的url基础上进行添加即可。引入requests库进行请求

base_url = r'https://bbs.hupu.com/acg'

add_url = ''

content_str = ''

# 尝试请求15个网页

for i in range(1, 15):

if i != 1:

add_url = r'-{}'.format(i)

else:

add_url = ''

url = base_url + add_url

response = requests.get(url)

2、BeautifulSoup解析

打开浏览器的控制台,观察网页源码,寻找需要获得的数据的标签。我们需要获取一个帖子的标题,通过浏览网页源码可以发现帖子的标题在一个标签中,且class=“truetit”,通过这两个信息我们就可以通过BeautifulSoup获取一个帖子的标题了。

7beac1725f42b44983d3c999fc9c4241.png

base_url = r'https://bbs.hupu.com/acg'

add_url = ''

content_str = ''

for i in range(1, 15):

if i != 1:

add_url = r'-{}'.format(i)

else:

add_url = ''

url = base_url + add_url

response = requests.get(url)

# 引入BeautifulSoup

soup = BeautifulSoup(response.text, "lxml")

# 找标签,class = ‘truetit’

all_title = soup.find_all("a", class_="truetit")

for title in all_title:

content_str += title.text

需要注意的是,

all_title = soup.find_all("a", class_="truetit")

会把当前网页的所有标题都读出来,且格式是一个以标签为元素的list,通过for遍历这个list,对每一个,调用title.text即可以获得帖子的标题。

print一下,查看是不是获得了想要的结果:

0d36923db7c1537b0b2bbcf5321f2a60.png

可以看到我们已经获得了我们想要的标题,下一步就是数据处理了(jieba分词+去停)

3、jieba分词+去停用词

先写一个生成停用词表的函数

# 引入停用词表

def stopwordslist(filepath):

stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]

return stopwords

再进行jieba分词,去停使用的是哈工大停用词表

# 用lcut使得分词后为一个list

s_list = jieba.lcut(content_str)

out_list = []

# 引入停用词表

stopwords = stopwordslist(r'E:\stopwords-master\哈工大停用词表.txt')

for word in s_list:

if word not in stopwords:

if word != '\t':

out_list.append(word)

out_str = " ".join(out_list)

到这一步,就可以获得分词后的关键词了。下一步就是画词云图了。

4、画词云图

引入wordcloud,font_path是字体的路径,不导入的话可能只会显示一些框框,具体文字下载可以去网上找。mask是背景图片。generate()里的是string类型的数据。

alice_mask = plt.imread(r'D:\壁纸\huge.jpg')

# generate的是string类型的

word_cloud = WordCloud(font_path='msyh.ttc',mask=alice_mask,background_color='white', max_words=400, max_font_size=80).generate(out_str)

plt.figure(figsize=(15,9))

plt.imshow(word_cloud, interpolation="bilinear")

plt.axis('off')

plt.show()

5、结果展示

不引入mask参数:

2b6e06ed2556170c5f380babdfe4b69a.png

引入mask参数:

acccb5c361467e620eda5c228b1cae12.png

今天是8月8号,最近正好是巨人最新一话发布的时候,所以巨人的讨论度很高。同时一直支撑着虎扑acg区热度的海贼王讨论度也很高,其次的关键词还有 动画,动漫,龙珠,艾伦,漫画,情报等等。

6、需要改进的地方

(1)无关紧要的词太多了,需要自写停用词表进行去停。如最后结果中的“是不是”,“觉得”等,这些词都应该去掉

(2)引入mask的情况下,很多背景图使用了最后却没有展示出来。有的背景图可以,有的却不可以。

最后,感谢观看这篇博客。其中借鉴了许多网上的内容,感谢一些原作者的努力。

一、python简单爬取静态网页

一.简单爬虫框架 简单爬虫框架由四个部分组成:URL管理器.网页下载器.网页解析器.调度器,还有应用这一部分,应用主要是NLP配合相关业务. 它的基本逻辑是这样的:给定一个要访问的URL,获取这个ht ...

Python爬虫爬取百度贴吧的帖子

同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...

用python简单爬取一个网页

1打开编辑器 2撸几行代码 import urllib.request import urllib.error def main(): askURl("http://movie.douban ...

Python爬虫:爬取自己博客的主页的标题,链接,和发布时间

代码 # -*- coding: utf-8 -*- """ ------------------------------------------------- File ...

python连续爬取多个网页的图片分别保存到不同的文件夹

python连续爬取多个网页的图片分别保存到不同的文件夹 作者:vpoet mail:vpoet_sir@163.com #coding:utf-8 import urllib import ur ...

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

Python 爬取单个网页所需要加载的地址和CSS、JS文件地址

Python 爬取单个网页所需要加载的URL地址和CSS.JS文件地址 通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题.图片.文章等等).而我从测试的角度去使用Python爬 ...

Python:将爬取的网页数据写入Excel文件中

Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

python爬虫——爬取网页数据和解析数据

1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.只要浏览器能够做的事情,原则上,爬虫都能够做到. 2 ...

随机推荐

ExtJS 4.2 业务开发(一)主页搭建

本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...

关于Javascript splice方法的一个坑。

w3c相关文档:http://www.w3school.com.cn/jsref/jsref_splice.asp bug:购物车计算价格的时候.加商品没问题,减商品的时候价格总是计算错误. 经排查发 ...

C#借助谷歌翻译实现翻译小工具(一)基本功能实现

软件效果: 实现原理很简单,就是封装谷歌翻译网站:http://translate.google.cn/,一个WebBrowser"肢解"谷歌翻译网站的HtmlElement元素, ...

Mybatis-Generator 自动生成Dao、Model、Mapping相关文档

最近在学习mybatis,结果在写Mapping的映射文件时insert语句一直报错,于是想看看标准的映射文件是什么样.百度到Mybatis-Generator 自动生成Dao.Model.Mappi ...

scp输入密码问题

今天查看预发布项目是发现一个问题,代码中使用了ganymed-ssh2-262.jar执行scp远程copy,但发现没有成功,没报错,程序阻塞了 狂搜...郁闷的是按照网上说的,做了几遍但是没成功,没 ...

利用Python实现一个感知机学习算法

本文主要参考英文教材Python Machine Learning第二章.pdf文档下载链接: https://pan.baidu.com/s/1nuS07Qp 密码: gcb9. 本文主要内容包括利 ...

c#统计代码行数

小编,已经快学了两年编程了.昨天突发奇想,想统计下这些年到底写过多少行代码,于是做了一个这个小程序来统计代码行数.老规矩,先上图. 比较惭愧,写了两年只有2万多行.那我们还是进入下一项吧. 界面搭建我 ...

python3 load Iris.data数据集出现报错key words: b'Iris-setosa'

通过搜索原因,发现有可能是在对文件读取是编译出现了问题,并且Keyword中提示b'Iris-setosa',而我们的string转float函数中没有字母b,很奇怪.所以尝试将转换函数所有的stri ...

SpringSecurity实现短信登录功能

⒈封装短信验证码类 package cn.coreqi.security.validate; import java.time.LocalDateTime; public class Validate ...

Python Pandas 箱线图

各国家用户消费分布 import numpy as np import pandas as pd import matplotlib.pyplot as plt data = { 'China': [ ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值