首先是解析网页信息

引库(前提是你已经安装过了)

import requests
from bs4 import BeautifulSoup

接下来先请求网页

def getHtml(url):"""请求网页"""hd = {"User-Agent": "Mozilla/5.0"}  # 加入请求头r = requests.get(url, headers=hd, timeout=30)  # get请求方法r.encoding = "utf-8"  #r.apparent_encodingreturn r.text

上面"User-Agent": "Mozilla/5.0"意思就是请求头,用处就是假装你是用浏览器访问的

如果直接用python访问的话可能不会成功,因为许多网站都有反爬虫机制,不加请求头会被直接屏蔽的,因为网站会识别到你使用python爬虫进行访问的。

接下来是解析与提取网页信息,其中网页信息的提取是最难的也是最主要的内容

def extrachhtml(html):"解析与提取网页信息"s = BeautifulSoup(html, "html.parser")  # 解析网页txt = s.find_all("p", class_="comment-content")#print(txt)context = ""for item in txt:d = item.get_text()  # 去掉标签只保留文字# print(d)context=context+dcontext.strip(" ")#print(context)save_text(context)  # 调用

第三行都一样,然后我们看第四行是什么意思

第四行find_all是找到所有自己想找到的内容,然后看括号里面第一个"p"是什么意思,是真么找的

点开网页,就比如是这个三体的短评,然后按F12进入开发者模式

然后在短评位置,就是别人的评论,按鼠标右键点击检查

找到<p class="comment-content">

然后可以看到这个评论是在<p>标签下的 class="comment-content"中的

这是后需要打代码 class_="comment-content"  标红的这一点是多了个下划线

然后find_all就是找到所有在这个标签下的评论,然后再进一步处理文本数据就行了

储存文件

def save_text(context):"""存储文件"""with open("三体评论爬取.csv", "a", encoding="utf-8") as f:f.write(context)
with open("三体评论爬取.csv", "a", encoding="utf-8") as f:

前面是以csv格式储存文本,a是写入模式不覆盖之前内容,如果改为w则为写入然后覆盖,encoding="utf-8"中文的一种编码

给出网址

for i in range(1,20):url =f"https://book.douban.com/subject/2567698/comments/?limit={i*20}&status=P&sort=new_score"html = getHtml(url)extrachhtml(html)

这个是爬取第一页到第二十页 记住要用{ }

如何爬取多页网址,你应该翻开第一页然后翻第二页看一看网址的变化 就比如这个网址他是第一页limit=后面是20 第二页就是40 所以就是i*20的变化

---------------------------------------------------------------------------------------------------------------------------------

接下来,我们就对保存好的数据进行深加工

#制作词云,我们需要用到 wordcloud 模块、matplotlib 模块、jieba 模块,同样都是第三方模块,直接用 pip 进行安装。from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import numpy
from PIL import Image
#去除一些词语
exclude={"我的","我","得","的","有","了","是","你"}

这是去除一些没意义的词,不然出现在词云中不好看

然后解析背景图片

# 解析背景图片mask_img = numpy.array(Image.open('C:/Users/Lenovo/Desktop/1.png'))

后面的地址是你的图片地址,图片格式为jpg,png,jpeg都行

接下来就是设置词云样式

#设置词云样式
wc = WordCloud(scale=5, #这个数值越大,产生的图片分辨率越高,字迹越清晰,最好不要超过64,运行很慢# 设置字体font_path='SIMYOU.TTF',# 允许最大词汇量max_words = 3000,# 设置最大号字体大小max_font_size = 70,# 设置使用的背景图片mask = mask_img,# 设置输出的图片背景色background_color="BLACK", mode="RGBA",# 设置有多少种随机生成状态,即有多少种配色方案random_state=50,#不显示这些词语stopwords=exclude)

这上面都有注释 可以仔细看一下,基本上词云样式这一部分代码都是固定的了,具体词云怎么做的不一样全靠你找的图片,就是上方的解析背景图片。

这时候就要提一下你找的背景图片了,最好是背景是白色的,然后你想要作词云形状的那个图片是其他颜色,这时候你在网上找的图片就不一样符合了,还需要你用一下Ps 稍微修改一下你的词云图片,这样才能让词云做出来更好看。

就比如我做的这个

原本背景肯定不是白色的,需要抠一下图,自己改一下背景,然后做出来的词云才会更好看

接下来,我们要读取文本信息,进行分词并连接起来
# 读取文件内容
br = pd.read_csv('D:/pycharm路径/爬虫数据分析/三体评论爬取.csv', header=None)  #和上边保存数据的路径一样
# 进行分词,并用空格连起来
text = ''
for line in br[0]:text += ' '.join(jieba.cut(line, cut_all=False))

jieba库是用来分词(中文)的,创建一个空字符串,把分过的词放进去,第一行是读取已经分过词的文件内容用来制作词云

然后就是最后一步啦

wc.generate(text)
plt.imshow(wc) #显示词云
plt.axis("off") #关闭坐标轴
plt.show() #显示图像

这个也是固定套路

所以你作词云只需要改一下那个网址,如果有多页就多观察一下网址有什么规律,然后就是找一下自己想要做成词云形状的图片,其他的都是固定套路,不需要做出什么改变

然后给大家一下全部的代码,这个是三体的短评词云

import requests
from bs4 import BeautifulSoupdef getHtml(url):"""请求网页"""hd = {"User-Agent": "Mozilla/5.0"}  # 加入请求头r = requests.get(url, headers=hd, timeout=30)  # get请求方法r.encoding = "utf-8"  #r.apparent_encodingreturn r.textdef extrachhtml(html):"解析与提取网页信息"s = BeautifulSoup(html, "html.parser")  # 解析网页txt = s.find_all("p", class_="comment-content")#print(txt)context = ""for item in txt:d = item.get_text()  # 去掉标签只保留文字# print(d)context=context+dcontext.strip(" ")#print(context)save_text(context)  # 调用def save_text(context):"""存储文件"""with open("三体评论爬取.csv", "a", encoding="utf-8") as f:f.write(context)for i in range(1,20):url =f"https://book.douban.com/subject/2567698/comments/?limit={i*20}&status=P&sort=new_score"html = getHtml(url)extrachhtml(html)#接下来,我们就对保存好的数据进行深加工。#制作词云,我们需要用到 wordcloud 模块、matplotlib 模块、jieba 模块,同样都是第三方模块,直接用 pip 进行安装。from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import numpy
from PIL import Image#去除一些词语
exclude={"我的","我","得","的","有","了","是","你"}# 解析背景图片
#mask_img = plt.imread('C:/Users/Lenovo/Desktop/2.jpg')  #图片背景的地址
mask_img = numpy.array(Image.open('C:/Users/Lenovo/Desktop/1.png'))#设置词云样式
wc = WordCloud(scale=5, #这个数值越大,产生的图片分辨率越高,字迹越清晰,最好不要超过64,运行很慢# 设置字体font_path='SIMYOU.TTF',# 允许最大词汇量max_words = 3000,# 设置最大号字体大小max_font_size = 70,# 设置使用的背景图片mask = mask_img,# 设置输出的图片背景色background_color="BLACK", mode="RGBA",# 设置有多少种随机生成状态,即有多少种配色方案random_state=50,#不显示这些词语stopwords=exclude)#接下来,我们要读取文本信息,进行分词并连接起来# 读取文件内容
br = pd.read_csv('D:/pycharm路径/爬虫数据分析/三体评论爬取.csv', header=None)  #和上边保存数据的路径一样
# 进行分词,并用空格连起来
text = ''
for line in br[0]:text += ' '.join(jieba.cut(line, cut_all=False))wc.generate(text)
plt.imshow(wc) #显示词云
plt.axis("off") #关闭坐标轴
plt.show() #显示图像

动动小手给个♥

动动小手给个♥

动动小手给个♥

爬取豆瓣短评制作词云相关推荐

  1. 批量爬取豆瓣短评并批量生成词云

    批量爬取豆瓣短评并批量制作为词云 我分为两步实现获取短评和制作词云 1.批量爬取豆瓣短评 from bs4 import BeautifulSoup import requests import th ...

  2. 详解使用Python爬取豆瓣短评并绘制词云

    使用Python爬取豆瓣短评并绘制词云 成果如下(比较丑,凑合看) 1.分析网页 打开想要爬取的电影,比如<找到你>,其短评如下: 查看源代码 发现短评存放在<span>标签里 ...

  3. python爬取豆瓣短评_爬取并简单分析豆瓣电影短评

    导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...

  4. python爬取歌词生成词云图_爬取毛不易歌词作词云展示

    爬取毛不易歌词作词云展示 今天我们做一个数据可视化的项目,爬取毛不易的歌词做词云展示. 1.爬取数据 我们主要使用 Python 爬虫获取 HTML,用 XPath 对歌曲的 ID.名称进行解析,然后 ...

  5. python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题

    python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...

  6. python爬取豆瓣短评_爬虫-爬取豆瓣短评

    爬虫-爬取豆瓣短评 啥是爬虫? ​按照一定的规则,自动地抓取互联网信息的程序. 为啥要用爬虫? ​可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在 ...

  7. 2.Request爬取豆瓣短评

    使用Requests爬取豆瓣短评 Python爬虫(入门+进阶) DC学院 本节课程的内容是介绍什么是Requests库.如何安装Requests库以及如何使用Requests库进行实际运用. Req ...

  8. 入门爬虫示例-爬取豆瓣短评

    群里有个小妹妹,让我帮她写的代码,好像是作业什么的.花了几分钟看了一下,随便写写,分享给有需要的童鞋,我用python 3 写的,实现的功能就是:爬取豆瓣短评,然后将数据写入本地的excel表格,数据 ...

  9. Python - 爬取豆瓣短评评论

    Python - 爬取豆瓣短评评论 import requests from bs4 import BeautifulSoup import re import time# 保存豆瓣评分 source ...

最新文章

  1. 抢了人类编辑饭碗的AI算法,会完胜吗?
  2. ASP.NET中常用的js代码
  3. python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm
  4. hibernate3 hbm2java_hibernate3下hbm2ddl和hbm2java的配置
  5. spark之3:安装部署
  6. python三大结构、顺序结构_Python学习笔记3——三大结构:顺序,分支,循环3
  7. 7-2 银行排队问题之单窗口“夹塞”版 (30 分)
  8. 《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——1.10节本章小结
  9. 如何保持网站重建前已有的排名
  10. 用calloc()函数分配内存
  11. 二叉搜索树的思想,以及增删查改的实现
  12. 五十一、【Bluetooth蓝牙模块】
  13. C# 字符转ASCII码,ASCII码转字符
  14. 【hdu 4859】海岸线(图论--网络流最小割)
  15. 先有产品管理,后有产品经理
  16. 大数据Vue项目案例总结
  17. cookie的工作原理
  18. 读书笔记-情感化设计
  19. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通...
  20. 旅游类App原型制作分享-Triposo

热门文章

  1. java11纳秒时间的局限性
  2. 无人机摄影测量自动化刺点软件GCPMarker介绍
  3. c语言常量l12和意义,课件c语言l12_指针和数组
  4. 二次开发MES管理系统的利与弊
  5. 如何区分货币贬值率和通货膨胀率
  6. Kyligence Analytics Platform Enterprise
  7. Kesion 网校的学习
  8. 2018年河南1190名先心病、白血病患儿获红会资助
  9. MSP430fr6989配合A7129发送一帧无线数据包的操作过程
  10. symbian线程和进程学习笔记