爬虫大作业_爬取三星Galaxy_S9论坛

1.选一个自己感兴趣的主题或网站。(所有同学不能雷同)

2.用python 编写爬虫程序,从网络上爬取相关主题的数据。

3.对爬了的数据进行文本分析,生成词云。

4.对文本分析结果进行解释说明。

5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。

6.最后提交爬取的全部数据、爬虫及数据分析源代码。

 这次爬取的是三星S9论坛

一共爬取了100页,大约2400篇帖子。对爬取到的文本进行分析,利用结巴分词,提取每篇帖子的20个关键词,再用词云对关键词文本进行分析,生成词云。

一、以下是爬取帖子的相关代码

import requests
from bs4 import BeautifulSoup
import jieba
import jieba.analyse

#将爬取到的文本保存到TXT文件 def file(content): f = open('samsung.txt', 'a', encoding='utf-8') f.write(content) f.write("\r") f.close()
#对论坛中的每一页进行分析,得到每一个帖子的访问链接 def getListUrl(newbbsurl): print(newbbsurl) newbbs = requests.get(newbbsurl) soup1 = BeautifulSoup(newbbs.text, 'html.parser') body = soup1.select('.ImgList') for i in body: aurl = i.select('a')[0].attrs['href'] url = ("http://www.galaxyclub.cn" + aurl) print(url) getContent(url)
#爬取每个帖子中的文本,提取每个帖子中的20个关键词,并保存到文件中 def getContent(url): newurl1 = requests.get(url) soup1 = BeautifulSoup(newurl1.text, 'html.parser') body = soup1.select('.BSHARE_POP')[0].text i = jieba.analyse.extract_tags(body, topK=20, withWeight=False, allowPOS=()) for a in i: file(a)
#生成前一百页的链接 for i in range(1,100): aurl = 'http://www.galaxyclub.cn/bbs/galaxys_s9-p{}.html'.format(i) getListUrl(aurl)

二、以下是读取文本生成词云的相关代码

from scipy.misc import imread  
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt

#用于生成词云的图片 back_color = imread('123.png') wc = WordCloud(background_color='white', # 生成词云的背景颜色 max_words=1000, # 设置最大词数 mask=back_color, # 以该参数值作图绘制词云。 max_font_size=100, # 显示字体的最大值 stopwords=STOPWORDS.add('\n'), # 使用内置的屏蔽词,再添加'苟利国' font_path="C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simhei_31bf3856ad364e35_10.0.17133.1_none_d9a7426bdd402fe7\simhei.ttf", # 解决无法显示中文的问题。 random_state=45, # 为每个词返回一个PIL颜色 ) #读取爬取到的文本文件 f = open('samsung.txt', 'r', encoding='utf-8').read() wc.generate(f) # 基于彩色图像生成相应彩色 image_colors = ImageColorGenerator(back_color) # 显示图片 plt.imshow(wc) # 关闭坐标轴 plt.axis('off') # 绘制词云 plt.figure() plt.imshow(wc.recolor(color_func=image_colors)) plt.axis('off') # 保存图片 wc.to_file('samsung.png')

三、以下是生成词云时使用的图片和生成的词云

猜你喜欢

转载自www.cnblogs.com/hano/p/8932475.html