Fundamentals 8 min read

7 Fun Python Projects: Web Scraping, Chatbots, Poetry Classification and More

This article presents seven practical Python scripts—from a concise web scraper for Zhihu images and a chatbot conversation loop to a Naive Bayes poem author classifier, a lottery number generator, an automated essay writer, a screen‑capture tool, and a GIF creator—demonstrating how to avoid reinventing the wheel while exploring diverse automation tasks.

MaGe Linux Operations
MaGe Linux Operations
MaGe Linux Operations
7 Fun Python Projects: Web Scraping, Chatbots, Poetry Classification and More

There is a well‑known saying about Python: "Don't reinvent the wheel." The article points out three common problems: not knowing existing libraries, duplicating effort on tasks already solved by mature tools, and collecting data without a clear purpose.

Seven Python Projects

1. Scrape Zhihu Images (≈30 lines)

from selenium import webdriver
import time
import urllib.request
import re

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:
        driver.find_element_by_css_selector('button.QuestionMainAction').click()
        print("page" + str(i))
        time.sleep(1)
    except:
        break
result_raw = driver.page_source
content_list = re.findall("img src=\"(.+?)\" ", str(result_raw))
n = 0
while n < len(content_list):
    i = time.time()
    local = r"%s.jpg" % (i)
    urllib.request.urlretrieve(content_list[n], local)
    print("编号:" + str(i))
    n = n + 1

2. Chat Between Two Bots

from time import sleep
import requests
s = input("请主人输入话题:")
while True:
    resp = requests.post("http://www.tuling123.com/openapi/api", data={"key":"4fede3c4384846b9a7d0456a5e1e2943", "info": s})
    resp = resp.json()
    sleep(1)
    print('小鱼:', resp['text'])
    s = resp['text']
    resp = requests.get("http://api.qingyunke.com/api.php", {"key":"free", "appid":0, "msg": s})
    resp.encoding = 'utf8'
    resp = resp.json()
    sleep(1)
    print('菲菲:', resp['content'])
    # Additional example using 小i robot omitted for brevity

3. Identify Poem Author (Li Bai or Du Fu) Using Naive Bayes

import jieba
from nltk.classify import NaiveBayesClassifier

# Load poems
text1 = open(r"libai.txt", "rb").read()
list1 = jieba.cut(text1)
result1 = " ".join(list1)
text2 = open(r"dufu.txt", "rb").read()
list2 = jieba.cut(text2)
result2 = " ".join(list2)

def word_feats(words):
    return {word: True for word in words}

libai_features = [(word_feats(lb), 'lb') for lb in result1]
dufu_features = [(word_feats(df), 'df') for df in result2]
train_set = libai_features + dufu_features
classifier = NaiveBayesClassifier.train(train_set)

sentence = input("请输入一句你喜欢的诗:")
seg_list = jieba.cut(sentence)
words = " ".join(seg_list).split()
lb = df = 0
for word in words:
    classResult = classifier.classify(word_feats(word))
    if classResult == 'lb':
        lb += 1
    if classResult == 'df':
        df += 1
x = float(lb) / len(words)
y = float(df) / len(words)
print('李白的可能性:%.2f%%' % (x * 100))
print('杜甫的可能性:%.2f%%' % (y * 100))

4. Generate Random 35‑choose‑7 Lottery Numbers

import random

temp = [i + 1 for i in range(35)]
random.shuffle(temp)
i = 0
lst = []
while i < 7:
    lst.append(temp[i])
    i = i + 1
lst.sort()
print('\033[0;31;;1m')
print(*lst[0:6], end="")
print('\033[0;34;;1m', end=" ")
print(lst[-1])

5. Auto‑Generate an Apology Letter

import random
import xlrd

ExcelFile = xlrd.open_workbook(r'test.xlsx')
sheet = ExcelFile.sheet_by_name('Sheet1')
i = []
x = input("请输入具体事件:")
y = int(input("老师要求的字数:"))
while len(str(i)) < y * 1.2:
    s = random.randint(1, 60)
    rows = sheet.row_values(s)
    i.append(*rows)
print("    " * 8 + "检讨书
" + "老师:")
print("我不应该" + str(x) + ",", *i)
print("再次请老师原谅!")

6. Screen Capture Recorder

from time import sleep
from PIL import ImageGrab

m = int(input("请输入想抓屏几分钟:"))
m = m * 60
n = 1
while n < m:
    sleep(0.02)
    im = ImageGrab.grab()
    local = r"%s.jpg" % (n)
    im.save(local, 'jpeg')
    n = n + 1

7. Create an Animated GIF

from PIL import Image

im = Image.open("1.jpg")
images = []
images.append(Image.open('2.jpg'))
images.append(Image.open('3.jpg'))
im.save('gif.gif', save_all=True, append_images=images, loop=1, duration=1, comment=b"aaabb")

The collection demonstrates how Python can quickly automate diverse tasks, encouraging developers to explore existing libraries before writing new code.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Data GenerationNLPChatbotWeb Scraping
MaGe Linux Operations
Written by

MaGe Linux Operations

Founded in 2009, MaGe Education is a top Chinese high‑end IT training brand. Its graduates earn 12K+ RMB salaries, and the school has trained tens of thousands of students. It offers high‑pay courses in Linux cloud operations, Python full‑stack, automation, data analysis, AI, and Go high‑concurrency architecture. Thanks to quality courses and a solid reputation, it has talent partnerships with numerous internet firms.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.