用python做词云

用Python抓取太原地区IT行业的需求,并做成词云

好了首先就是分析网页:

1、搜索并进入中华英才网(http://www.chinahr.com/taiyuan/jobs/57552/)。

2、右击打开检查因为要分析的是对什么人才的需求,所以我们只需要抓取工作名称就好了。



3、点击箭头指向的标号,并选中工作的名字就可以看到他在网页中的属性


接下来就是编码了

import requests  
from bs4 import BeautifulSoup  
from datetime import datetime  
import re  
import json  
import pandas
jobs_total = []
f = open('F:\\joblist.txt','a+',encoding='utf-8')
print("............")
url='http://www.chinahr.com/taiyuan/jobs/57552/'  
res=requests.get(url)  
res.encoding='utf-8'  
soup=BeautifulSoup(res.text,'html.parser')  

for i in range(0,20):
    jobName=soup.select('.e1 a')[i].text
    jobs_total.extend(jobName)
    f.write("  "+jobName) 
    jobSalary=soup.select('.l2 .e2')[i].text

hurl='http://www.chinahr.com/taiyuan/jobs/57552/{}'
for i in range(2,99):
    nurl=hurl.format(i)
    res=requests.get(nurl)
    res.encoding='utf-8'  
    soup=BeautifulSoup(res.text,'html.parser')  
    for i in range(0,20):
        jobName=soup.select('.e1 a')[i].text
        f.write("  "+jobName)
        jobs_total.extend(jobName)
        jobSalary=soup.select('.l2 .e2')[i].text
len(jobs_total)
print("............")
df=pandas.DataFrame(jobs_total)
f.close()

一页是20条数据,一共99页。上边的代码就是帮我们抓取的所有职位信息。

接下来我们就要生成词云了。

刚开始写出来是这样的


都显示的是一个大方框子

说明生成成功了,但是写这个的是一个老外,不会说中文。我们需要自己的中文字体,于是有了下边的代码;

#-*- coding: utf-8 -*-
%pylab inline
from wordcloud import WordCloud
from os import path
import matplotlib.pyplot as plt

f = open('F:\\joblist.txt','r',encoding='utf-8')
jobsText=f.read()
wordcloud = WordCloud(font_path="F:\\simfang.ttf").generate(jobsText)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
好了这下子就得到了我们需要的东西



这就是生成的词云,从图片中看到的是太原地区IT行业竟然多数找的是销售,作为一个学软件的好心累。

应为要爬取1万8千条数据,慢是正常的,耐心等待。


<think>我们正在处理用户关于使用Python的wordcloud库生成图的问题。根据提供的引用内容,我们可以整合出一个完整的指南。步骤:1.安装wordcloud库2.准备文本数据3.创建WordCloud对象并配置参数(如字体路径、背景颜色等,特别是处理中文时需要指定中文字体)4.生成图(可以直接使用文本字符串,也可以使用频字典)5.使用matplotlib展示图6.保存图(可选)注意:处理中文文本时,通常需要先用分工具(如jieba)进行分,然后再生成。我们将按照以下结构回答:1.介绍基本步骤2.提供示例代码(包括处理英文和中文的示例)3.解释关键参数同时,根据系统指令,我们需要在回答中生成相关问题。参考引用:[^1]展示了英文的基本生成方法。[^2]介绍了wordcloud库的基本步骤。[^3]提供了中文的生成方法(需要结合jieba分)。[^4]提到了一些关于的注意事项。因此,我们的回答将包括:-英文生成示例-中文生成示例(使用jieba分)注意:在中文示例中,必须指定中文字体路径,否则会显示乱码。代码格式:使用代码块包裹Python代码。最后,生成相关问题。</think>### 使用Python和WordCloud库生成图指南 #### 一、基础步骤 1. **安装必要库** ```bash pip install wordcloud matplotlib jieba ``` (中文处理需安装`jieba`分库) 2. **英文生成** ```python from wordcloud import WordCloud import matplotlib.pyplot as plt text = "Python is a powerful programming language used for web development, data analysis, and AI." # 生成对象 wordcloud = WordCloud( width=800, height=400, background_color='white' ).generate(text) # 显示 plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() ``` 3. **中文生成** ```python import jieba from wordcloud import WordCloud # 中文分处理 text = "自然语言处理是人工智能的重要领域" seg_list = jieba.cut(text) chinese_text = " ".join(seg_list) # 必须指定中文字体路径 wordcloud = WordCloud( font_path="C:/Windows/Fonts/simhei.ttf", # Windows系统黑体路径 background_color='white' ).generate(chinese_text) plt.imshow(wordcloud) plt.axis("off") plt.show() ``` #### 二、核心参数配置 | 参数 | 说明 | 示例值 | |------|------|--------| | `font_path` | 中文字体路径 | `'fonts/simhei.ttf'` | | `width/height` | 图片尺寸 | `width=1200, height=600` | | `background_color` | 背景色 | `'black'`, `'#f0f0f0'` | | `max_words` | 最大显示数 | `200` | | `colormap` | 配色方案 | `'viridis'`, `'plasma'` | | `mask` | 自定义形状 | `numpy数组` | #### 三、进阶功能 1. **自定义形状** ```python from PIL import Image import numpy as np mask = np.array(Image.open("cloud_shape.png")) # 加载形状模板 wordcloud = WordCloud(mask=mask).generate(text) ``` 2. **从频生成** ```python word_freq = {"Python": 35, "数据分析": 28, "AI": 20} wordcloud.generate_from_frequencies(word_freq) ``` 3. **保存图** ```python wordcloud.to_file("wordcloud_output.png") ``` #### 四、注意事项 1. 中文文本必须经过分处理,推荐使用`jieba`库[^3] 2. 避免使用纯白色背景,否则可能无法显示文字轮廓 3. 对于长文本,建议设置`max_words`限制显示数[^4] 4. 更适合展示关键分布,不适用于精确数据呈现[^4] > 示例效果: > ![基础示例](https://example.com/wordcloud-demo.png) > (实际效果取决于文本内容和参数配置)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值