前言
Python 以其简洁的语法和强大的库支持,成为自动化任务和数据处理的首选语言。通过实战项目可以快速掌握核心技能。以下整理了 7 个经过调试的 Python 脚本,涵盖爬虫、AI、工具开发等领域。
本文分享了 7 个 Python 实战项目代码,涵盖知乎图片抓取、聊天机器人对话、唐诗作者分析、彩票生成、自动检讨书、屏幕录制及 GIF 制作。每个项目提供完整代码与使用说明,涉及 Selenium、NLTK、PIL 等库的应用。旨在通过具体案例帮助开发者理解 Python 在网络爬虫、人工智能及自动化工具开发中的实际应用,强调环境配置与代码安全性,适合初学者进行技术实践。

Python 以其简洁的语法和强大的库支持,成为自动化任务和数据处理的首选语言。通过实战项目可以快速掌握核心技能。以下整理了 7 个经过调试的 Python 脚本,涵盖爬虫、AI、工具开发等领域。
确保已安装 Python 3.6+ 及 pip。常用依赖如下:
pip install selenium requests jieba nltk pillow xlrd
注意:部分功能需申请第三方 API Key。
使用 Selenium 模拟浏览器滚动加载,提取图片链接并下载。
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import urllib.request
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.zhihu.com/question/29134042")
i = 0
while i < 10:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
try:
# 现代 Selenium 推荐写法
button = driver.find_element(By.CSS_SELECTOR, 'button.QuestionMainAction')
button.click()
print(f"page{i}")
time.sleep(1)
except Exception:
break
result_raw = driver.page_source
content_list = re.findall(r'img src="(.+?)" ', str(result_raw))
n = 0
while n < len(content_list):
timestamp = int(time.time())
local = f"{timestamp}.jpg"
urllib.request.urlretrieve(content_list[n], local)
print(f"编号:{timestamp}")
n += 1
driver.quit()
说明:需自行安装 ChromeDriver。注意遵守网站爬虫协议。
调用第三方 API 实现多机器人对话。
from time import sleep
import requests
import urllib.parse
# 请替换为您自己的 API Key
TULING_KEY = "YOUR_TULING_KEY"
QINGYUN_KEY = "free"
s = input("请输入话题:")
while True:
resp = requests.post("http://www.tuling123.com/openapi/api", data={"key": TULING_KEY, "info": s})
resp = resp.json()
sleep(1)
print('小鱼:', resp['text'])
s = resp['text']
resp = requests.get("http://api.qingyunke.com/api.php", {'key': QINGYUN_KEY, 'appid': 0, 'msg': s})
resp.encoding = 'utf8'
resp = resp.json()
sleep(1)
print('菲菲:', resp['content'])
说明:小 i 机器人接口较复杂,建议优先使用标准 HTTP 接口。
基于朴素贝叶斯分类器判断诗句作者。
import jieba
from nltk.classify import NaiveBayesClassifier
# 需准备 libai.txt 和 dufu.txt 文本文件
def load_poems(filename):
with open(filename, 'rb') as f:
return f.read().decode('utf-8')
text1 = load_poems("libai.txt")
text2 = load_poems("dufu.txt")
list1 = jieba.cut(text1)
list2 = jieba.cut(text2)
result1 = " ".join(list1)
result2 = " ".join(list2)
def word_feats(words):
return dict([(word, True) for word in words])
train_set = [(word_feats(lb), 'lb') for lb in result1.split()] + \
[(word_feats(df), 'df') for df in result2.split()]
classifier = NaiveBayesClassifier.train(train_set)
sentence = input("请输入一句你喜欢的诗:")
seg_list = jieba.cut(sentence)
words = list(seg_list)
lb_count, df_count = 0, 0
for word in words:
if classifier.classify(word_feats(word)) == 'lb':
lb_count += 1
else:
df_count += 1
total = len(words)
if total > 0:
print(f'李白的可能性:{float(lb_count / total) * 100:.2f}%')
print(f'杜甫的可能性:{float(df_count / total) * 100:.2f}%')
说明:训练数据质量直接影响准确率,建议收集更多样本。
模拟双色球选号逻辑(35 选 7)。
import random
temp = [i + 1 for i in range(35)]
random.shuffle(temp)
selected = temp[:7]
selected.sort()
# 彩色打印输出
print('\033[0;31;;1m', end='')
print(*selected[:-1], end=' ')
print('\033[0;34;;1m', end='')
print(selected[-1])
说明:仅供娱乐,无实际中奖预测能力。
读取 Excel 模板随机组合语句。
import random
import xlrd
# 需准备 test.xlsx,Sheet1 中包含检讨语句
ExcelFile = xlrd.open_workbook(r'test.xlsx')
sheet = ExcelFile.sheet_by_name('Sheet1')
event = input("请输入具体事件:")
target_len = int(input("老师要求的字数:"))
generated_text = []
while len(generated_text) < target_len:
row_idx = random.randint(1, min(sheet.nrows - 1, 60))
rows = sheet.row_values(row_idx)
for cell in rows:
if isinstance(cell, str):
generated_text.append(cell)
print("\n"*2)
print(" "*8 + "检讨书")
print("老师:")
print(f"我不应该{event},{''.join(generated_text)}")
print("再次请老师原谅!")
说明:Excel 文件需预先整理好语料库。
定时截取屏幕保存为图片序列。
from time import sleep
from PIL import ImageGrab
duration_min = int(input("请输入想抓屏几分钟:"))
duration_sec = duration_min * 60
n = 1
while n < duration_sec:
sleep(0.02)
im = ImageGrab.grab()
filename = f"screenshot_{n}.jpg"
im.save(filename, 'jpeg')
n += 1
说明:适用于监控或记录操作过程,注意存储空间占用。
将多张图片合成为 GIF。
from PIL import Image
images = []
images.append(Image.open("1.jpg"))
images.append(Image.open('2.jpg'))
images.append(Image.open('3.jpg'))
first_im = images[0]
first_im.save('output.gif', save_all=True, append_images=images[1:], loop=0, duration=100, comment=b"demo")
说明:需确保图片尺寸一致以获得最佳效果。
以上项目涵盖了网络请求、自然语言处理、图像处理等常见场景。建议读者在运行前阅读相关文档,并根据实际需求调整代码逻辑。持续练习是提升编程能力的唯一途径。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online