python:mport string from zhon.hanzi import punctuation with open('shuihuzhuan.txt', 'r', encoding='utf-8') as f: txt = f.read() for fh in punctuation: txt = str(txt).replace(fh,' ') print(txt) import jieba # 使用jieba库进行中文分词 words = list(jieba.cut(txt)) # 统计每个两个字以上词语出现的次数 word_count = {} for word in words: if len(word) >= 2: word_count[word] = word_count.get(word, 0) + 1 # 按照词频从大到小排序 word_count_sorted = sorted(word_count.items(), key=lambda x: x[1], reverse=True) # 输出前20个结果 top_words = [x[0] for x in word_count_sorted[:20]] print('即将出现前20个词频') for word in top_words: print(f'{word}: {word_count[word]}') # 将结果保存到文件中 with open('shuihuzhuan_word_count.txt', 'w', encoding='utf-8') as f: for word, count in word_count_sorted: f.write(f"{word}: {count}\n") import matplotlib.pyplot as plt # 取出Top20的词和词频 from pylab import mpl mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置显示中文字体 mpl.rcParams["axes.unicode_minus"] = False # 设置正常显示符号 plt.figure(figsize=(10, 5)) plt.bar(range(len(top_words)), [word_count[word] for word in top_words], align='center') plt.xticks(range(len(top_words)), top_words, fontsize=12, rotation=45) plt.xlabel(' ',fontsize=14) plt.ylabel(' ',fontsize=14) plt.title('数据来自水浒传', fontsize=16) plt.show()如何理解如何写出来的
时间: 2024-04-06 11:32:40 浏览: 147
这段代码是一个Python程序,目的是对《水浒传》这本小说进行中文分词,并统计每个词语出现的次数。程序首先读取《水浒传》这本小说的文本文件,然后通过引入zhon.hanzi库中的中文标点符号和jieba库进行中文分词。接着,程序统计每个两个字以上的词语出现的次数,并按照词频从大到小进行排序,最后输出前20个词语和它们的词频,并将结果保存到文件中。此外,程序还使用matplotlib库绘制了Top20词语的条形图以可视化结果。整个程序的目的是为了研究《水浒传》这本小说中哪些词语使用频率较高。
相关问题
mport jieba import wordcloud import numpy as np from PIL import Image star_mask=np.array(Image.open("star.png")) f=open("text.txt","r",encoding="utf-8") t=f.read() f.close() ls=jieba.lcut(t) txt="".join(ls) w=wordcloud.WordCloud(width=1000,height=700, backgroud_color="white", font_path="simhei.ttf", stopwords =wordcloud.STOPWORDS.add("发展"), mask = star_mask) w.generate(txt) w.to_file("out2.png")错哪了
你的代码缺少一些必要的语法,具体如下:
1. 代码第一行应该以 `#` 开头,表示这是注释。
2. 导入包的语句需要换行,不能写在同一行。
3. 你在代码中使用了 `backgroud_color`,应该改为 `background_color`。
4. `stopwords` 的拼写有误,应该改为 `stopwords`。
修改后的代码应该是这样的:
```
# 导入所需的包
import jieba
from wordcloud import WordCloud, STOPWORDS
import numpy as np
from PIL import Image
# 加载图片和文本数据
star_mask = np.array(Image.open("star.png"))
f = open("text.txt", "r", encoding="utf-8")
t = f.read()
f.close()
# 对文本进行分词处理
ls = jieba.lcut(t)
txt = " ".join(ls)
# 生成词云图并保存为图片
w = WordCloud(width=1000, height=700, background_color="white",
font_path="simhei.ttf", stopwords=STOPWORDS.add("发展"),
mask=star_mask)
w.generate(txt)
w.to_file("out2.png")
```
注意,这里的 `simhei.ttf` 字体文件需要根据你的操作系统和字体安装位置进行相应的调整。
mport random from time import sleep from DrissionPage import ChromiumPage from DrissionPage.common import Actions import csv f = open('data.csv',mode='a',encoding='utf-8',newline='') csv_writer = csv.DictWriter(f,fieldnames=['标题','点赞','转发','评论','收藏','image_link']) # 打开浏览器 dp = ChromiumPage().latest_tab actions = Actions(dp) # 监听 # dp.listen.start('json/fetchHotelList') # 访问网站 # dp.get('https://m.ctrip.com/restapi/soa2/31454/json/fetchHotelList') # dp.get('https://hotels.ctrip.com/hotels/list?countryId=1&city=-1&provinceId=0&checkin=2025/04/03&checkout=2025/04/04&optionId=20&optionType=Province&directSearch=1&optionName=%E6%B0%91%E5%AE%BF&display=%E6%B9%96%E5%8C%97%2C%20%E4%B8%AD%E5%9B%BD&crn=1&adult=1&children=0&searchBoxArg=t&travelPurpose=0&ctm_ref=ix_sb_dl&domestic=1&') dp.get('https://www.douyin.com/?recommend=1') # 等待数据包加载 # resp = dp.listen.wait() # 关闭初始弹窗(如果有) for _ in range(5000): # dp.ele('.xgplayer-playswitch-prev').ele('@tag=svg').click() # actions.scroll() # actions.mov
### 关于 DrissionPage 的使用指南
#### 1. 安装与初始化
为了使用 `DrissionPage` 中的 `ChromiumPage` 功能模块,首先需要安装该库。可以通过以下命令完成安装:
```bash
pip install drissionpage
```
接着,在 Python 脚本中导入必要的类并创建实例来初始化浏览器对象[^2]:
```python
from DrissionPage import ChromiumPage
# 创建一个默认设置的 ChromiumPage 对象
page = ChromiumPage()
```
如果需要自定义选项,则可以传递参数给 `addr_or_opts` 参数。例如,指定浏览器路径或启用无头模式:
```python
from DrissionPage.chromedp.options import ChromiumOptions
options = ChromiumOptions()
options.set_argument('--headless') # 启用无头模式 (仅适用于 Windows)
options.set_argument('--disable-gpu')
options.set_argument('--no-sandbox')
page = ChromiumPage(addr_or_opts=options)
```
---
#### 2. 页面访问与交互
通过调用 `.get()` 方法可实现页面加载功能。以下是基本示例代码片段:
```python
page.get('https://www.example.com')
```
当尝试定位不存在的元素时,可能会抛出异常。为了避免这种情况发生,可以在全局范围内调整配置以禁用错误提示[^1]:
```python
from DrissionPage.common import Settings
Settings.raise_when_ele_not_found = False # 不再因找不到元素而报错
ele = page.ele('#nonexistent-element-id') # 尝试查找不存在的元素
if not ele:
print("Element was not found.")
else:
print("Element exists and can be interacted with.")
```
对于已存在的 HTML 元素,可通过多种方式对其进行操作,比如点击按钮、输入文本等:
```python
button_element = page.ele('input[type="submit"]')
button_element.click()
text_field = page.ele('textarea[name="comment"]')
text_field.input("This is a test message!")
```
---
#### 3. 高级功能设定
##### 自定义启动参数
除了基础的功能外,还可以进一步优化性能表现以及隐藏爬虫特征。下面列举了一些常用的高级设置项[^2]:
- **窗口尺寸**
```python
options.set_argument('--window-size=1920,1080')
```
- **屏蔽图像资源加载**
```python
options.no_imgs(True)
```
- **静音音频播放**
```python
options.mute(True)
```
- **伪装 User-Agent 字符串**
```python
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
page.set.headers(headers=headers)
```
以上这些修改均需在实例化之前应用到对应的 Options 实例之上。
---
#### 4. 常见问题排查
假如执行过程中遇到了某些特定类型的难题,建议按照如下步骤逐一排除:
- 如果发现无法正常渲染目标网站的内容,请确认所使用的驱动版本是否匹配当前安装的浏览器版本。
- 当频繁触发反爬机制时,考虑适当延长时间间隔或者模拟人类行为动作序列。
最后提醒一点,由于该项目由国内开发者维护更新频率较高,因此强烈推荐定期查阅官方文档获取最新特性说明和支持范围扩展情况。
---
### 提供的相关代码样例总结
综合上述要点给出一段完整的示范脚本作为参考依据:
```python
from DrissionPage import ChromiumPage
from DrissionPage.chromedp.options import ChromiumOptions
from DrissionPage.common import Settings
Settings.raise_when_ele_not_found = False
options = ChromiumOptions()
options.set_argument('--start-maximized')
options.set_argument('--incognito')
options.no_imgs(True)
browser = ChromiumPage(options)
try:
browser.get('http://example.org/')
title_tag = browser.ele('title').text
print(f'Title of the webpage: {title_tag}')
finally:
browser.quit()
```
阅读全文
相关推荐

















