最近在学scrapy框架,看了不少大神的代码,还是感觉云里雾里,最好的学习就是实践,于是就有了今天的题目。我爬取了汪峰老师的146首歌词,并对他们进行分词、统计词频,然后用工具进行了可视化。
整个项目分3块:
- 歌词爬取与下载
- 歌词分词、统计词频
- 可视化处理
1.歌词爬取
主要用scrapy框架进行,像素级参照了@LEONYao的文章我爬了咪蒙的278篇文章做词频统计
歌词地址:https://mojim.com/cnh104044-A2.htm
上代码
import scrapy
from bs4 import BeautifulSoup
from ali.items import AliItem
class wang(scrapy.Spider):
name = 'wang'
def start_requests(self):
start_url=['https://mojim.com/cnh104044-A2.htm']
for url in start_url:
yield scrapy.Request(url=url,callback=self.parse_getlink)
def parse_getlink(self,response):
n=0
#print response.url
soup = BeautifulSoup(response.body,'lxml')
for i in soup.find_all('div',id='inS'):
for j in i.find_all('a'):
url = j.get('href')
url = 'https://mojim.com' + str(url)
yield scrapy.Request(url=url, callback=self.parse)
n+=1
print n
def parse(self,response):
item = AliItem()
soup = BeautifulSoup(response.body,'lxml')
for i in soup.find_all('dd',id='fsZx3'):
item['content'] = i.get_text()
yield item
2.词频统计
主要用jieba模块和停用词表,参照了@_CallMe靠谱叔 用jieba分词提取关键词做漂亮的词云的代码
词频.PNG3.可视化
你的梦想是什么? 我找不到了ORZ词云中字体大小是根据词频的大小设置的,通过分析词频,我得到了个惊人的发现,竟然没有找到汪老师的梦想,本来打算洗洗睡的我,顿时垂死梦中惊坐起,发现有点对不起汪老师,于是我拿着放大镜,翻着词频统计最后才在第35位找到了梦想两个字,真是细思恐极啊~
推荐两个小工具:
词云工具 很多人介绍过的 tagul
图云工具 也是一款神器shape collage
另外,词频的统计比较粗糙,没有区分词性,目前还没找到好的解决办法。哪位大神如果有好的办法,望不吝赐教~
网友评论