写在前面:此篇文章,也算是对于我个人而言,少部分在经济学习上的贡献吧。喜欢的就看看吧,不喜欢还请跳过。
环境说明:Windows10 + Python3.8.6 + Chrome
一、效果此效果的原数据,分别来自以下网站:
- 华尔街要闻
- 金十数据
- 第一财经
- 同花顺财经
- 新浪财经
安装下列库:
- selenium
- beautifulsoup4
- jieba
- matplotlib
- wordcloud
安装命令参考清华源安装命令(替换 some-package):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package2. 下载chromedriver.exe
下载地址:http://npm.taobao.org/mirrors/chromedriver/
注意事项:
- 下载的版本要与自己的 Chrome 浏览器版本相近,版本查询:chrome://settings/help
- 按照各自系统下载对应版本
将下载好的 chromedriver.exe 放到与程序放到同一目录下
实现步骤如下:
- selenium 爬取对应的网站数据
- beautifulsoup4 处理文本
- jieba 分词
- matplotlib + wordcloud 展示效果
代码参考:
from selenium import webdriver
from bs4 import BeautifulSoup
from matplotlib import pyplot as plt
from wordcloud import WordCloud
import jieba
'''
爬虫部分:
1. 配置无界面模式
2. 初始化 chromedriver
3. 循环爬取每个网站的页面数据
4. 通过 bs4 ,读取每个页面的文本
分词展示:
1. 将获取到的文本中某些无效词组替换为空
2. 通过 WordCloud 生成词云
3. 使用 plt 展示效果
'''
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
text = '' # 全部文本
urls = [
'https://wallstreetcn.com/live/global', # 华尔街要闻
'https://www.jin10.com/', # 金十数据
'https://www.yicai.com/', # 第一财经
'http://news.10jqka.com.cn/today_list/', # 同花顺财经
'https://finance.sina.com.cn/' # 新浪财经
]
for url in urls:
driver.get(url)
# bs4 获取页面文字 - 清除所有换行
text += BeautifulSoup(driver.page_source, 'html.parser').get_text().replace('n', '')
# 关闭 chromedriver
driver.close()
# 无效文本词组 - 可自定义
ignores = [
'年', '月', '日', '昨', '在', '的', '与', '天', '将', '等', '和', '了', '也', '是', '复制', '详情', '为', '财经', '更多', '分享'
]
for word in ignores:
text = text.replace(word, '')
# jieba 分词
text = ''.join(jieba.cut(text))
# 词云处理
wc = WordCloud(
font_path=r'C:WindowsFontssimkai.ttf',
background_color='black',
width=1000,
height=800
)
wc.generate_from_text(text)
process_word = WordCloud.process_text(wc, text)
# plt 展示结果
plt.imshow(wc)
plt.axis('off')
plt.show()
三、展示



