Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚
本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流行
的原因。
在本文中,我们将会带大家学习到30个案例实战从入门案例到精通,你可以
在更短的时间里理解和学习这些小案例。
学习编程是一个比较枯燥的过程,所以木子平常喜欢分享一些有趣、有料的
Python原创项目实战。主要有Python基础、爬虫、数据分析、数据可视化、
Pygame游戏等内容。
当然最受欢迎的还是大家最喜欢的游戏案例跟爬虫实战案例。
这里精选了30多个Python实战案例,不仅包含源码,还有使用教程。
今天小编给大家各方面Python案例都挑一挑,看看那些是你还没学习过的?
那些是学会了滴啦
本文展示的30个案例实战都是有源码的哈,大部分还有详细的视频详解,大
家需要的滴滴我。
一、🎐从零到十案例
1)案例展示
2)某宝秒杀案例
主程序——
import datetime import time from selenium import webdriver now = datetime.datetime.now().strftme('%Y-%m-%d %H:%M:%S.%f') times = "2022-03-03 21:07:00.00000000" driver = webdriver.Chrome(r'C:UsersTonyPycharmProjectsModule_Tony_DemoMoudle_游戏源码锦集chromedriver.exe') driver.get("https://www.taobao.com") time.sleep(3) driver.find_element_by_link_text("亲,请登录").click() print(f"请尽快扫码登录") time.sleep(20) driver.get("https://cart.taobao.com/cart.htm") time.sleep(3) # 是否全选购物车 while True: try: if driver.find_element_by_id("J_SelectAll1"): driver.find_element_by_id("J_SelectAll1").click() break except: print(f"找不到购买按钮") while True: # 获取时间 now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') print(now) # 判断 - if now > times: # 结算 while True: try: if driver.find_element_by_link_text("结 算"): print("here") driver.find_element_by_link_text("结 算").click() print(f"程序已将商品锁定,结算成功") break except : pass # 提交订单 while True: try: if driver.find_element_by_link_text('提交订单'): driver.find_element_by_link_text('提交订单').click() print(f"抢购成功,请尽快付款") except: print(f"恭喜,本程序已帮你抢到商品啦,您来支付吧") break time.sleep(0.01)
3)vip视频免费白嫖
主程序——
# -*- coding:utf-8 -*- # url解析 from urllib import parse import tkinter.messagebox as msgbox import tkinter as tk import webbrowser import re class APP: def __init__(self, width=500, height=300): self.w = width self.h = height self.title = ' VIP视频破解助手' self.root = tk.Tk(className=self.title) # 定义button控件上的文字 self.url = tk.StringVar() # 定义选择哪个播放源 self.v = tk.IntVar() # 默认为1 self.v.set(1) # Frame空间 frame_1 = tk.Frame(self.root) frame_2 = tk.Frame(self.root) frame_3 = tk.Frame(self.root) # Menu菜单 menu = tk.Menu(self.root) self.root.config(menu=menu) moviemenu = tk.Menu(menu, tearoff=0) menu.add_cascade(label='友情链接', menu=moviemenu) # 各个网站链接 moviemenu.add_command(label= '腾讯视频', command = lambda: webbrowser.open('http://v.qq.com/')) moviemenu.add_command(label='搜狐视频', command=lambda: webbrowser.open('http://tv.sohu.com/')) moviemenu.add_command(label='芒果TV', command=lambda: webbrowser.open('http://www.mgtv.com/')) moviemenu.add_command(label='爱奇艺', command=lambda: webbrowser.open('http://www.iqiyi.com/')) moviemenu.add_command(label='PPTV', command=lambda: webbrowser.open('http://www.bilibili.com/')) moviemenu.add_command(label='优酷', command=lambda: webbrowser.open('http://www.youku.com/')) moviemenu.add_command(label='乐视', command=lambda: webbrowser.open('http://www.le.com/')) moviemenu.add_command(label='土豆', command=lambda: webbrowser.open('http://www.tudou.com/')) moviemenu.add_command(label='A站', command=lambda: webbrowser.open('http://www.acfun.tv/')) moviemenu.add_command(label='B站', command=lambda: webbrowser.open('http://www.bilibili.com/')) # 控件内容设置 group = tk.Label(frame_1, text='请选择一个视频播放通道:', padx=10, pady=10) tb1 = tk.Radiobutton(frame_1, text='通道一', variable=self.v, value=1, width=10, height=3) tb2 = tk.Radiobutton(frame_1, text='通道二', variable=self.v, value=2, width=10, height=3) label1 = tk.Label(frame_2, text="请输入视频链接:") entry = tk.Entry(frame_2, textvariable=self.url, highlightcolor='Fuchsia', highlightthickness=1, width=35) label2 = tk.Label(frame_2, text=" ") play = tk.Button(frame_2, text="播放", font=('楷体', 12), fg='Purple', width=2, height=1, command=self.video_play) label3 = tk.Label(frame_2, text=" ") label_explain = tk.Label(frame_3, fg='red', font=('楷体', 12), text=' 注意:支持大部分主流视频网站的视频播放! 此软件仅用于交流学习,请勿用于任何商业用途!') label_warning = tk.Label(frame_3, fg='blue', font=('楷体', 12), text=' 建议:将Chrome内核浏览器设置为默认浏览器 作者: 顾木子吖') # 控件布局 frame_1.pack() frame_2.pack() frame_3.pack() group.grid(row=0, column=0) tb1.grid(row=0, column=1) tb2.grid(row=0, column=2) label1.grid(row=0, column=0) entry.grid(row=0, column=1) label2.grid(row=0, column=2) play.grid(row=0, column=3, ipadx=10, ipady=10) label3.grid(row=0, column=4) label_explain.grid(row=1, column=0) label_warning.grid(row=2, column=0) """ 函数说明:视频播放 """ def video_play(self): # 视频解析网站地址 port_1 = 'http://www.wmxz.wang/video.php?url=' port_2 = 'http://www.vipjiexi.com/tong.php?url=' # 正则表达是判定是否为合法链接 if re.match(r'^https?:/{2}w.+$', self.url.get()): if self.v.get() == 1: # 视频链接获取 ip = self.url.get() # 视频链接加密 ip = parse.quote_plus(ip) # 浏览器打开 webbrowser.open(port_1 + self.url.get()) elif self.v.get() == 2: # 链接获取 ip = self.url.get() # 链接加密 ip = parse.quote_plus(ip) # 获取time、key、url get_url = 'http://www.vipjiexi.com/x2/tong.php?url=%s' % ip # 请求之后立刻打开 webbrowser.open(get_url) else: msgbox.showerror(title='错误', message='视频链接地址无效,请重新输入!') """ 函数说明:tkinter窗口居中 """ def center(self): ws = self.root.winfo_screenwidth() hs = self.root.winfo_screenheight() x = int((ws / 2) - (self.w / 2)) y = int((hs / 2) - (self.h / 2)) self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y)) """ 函数说明:loop等待用户事件 """ def loop(self): # 禁止修改窗口大小 self.root.reizable(False, False) # 窗口居中 self.center() self.root.mainloop() if __name__ == '__main__': app = APP() # 实例化APP对象 app.loop() # loop等待用户事件
4)简单的验证码识别
主程序——
""" 简单实现验证码识别 [环境使用]: Python 3.8 Pycharm [模块使用]: ddddocr ---> pip install ddddocr """ import ddddocr ocr = ddddocr.DdddOcr() with open('img_3.png', 'rb') as f: img_bytes = f.read() result = ocr.classification(img_bytes) print(result)
二、🎐从十一到二十案例
1)案例展示
2)Python采集某招聘网站
主程序——
""" selenium 去操作驱动然后控制浏览器 """ from selenium import webdriver import csv f = open('python_1.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '职位', '地区', '公司', '薪资待遇', '学历经验', '公司领域', '详情页', ]) csv_writer.writeheader() driver = webdriver.Chrome() driver.get('https://www.zhipin.com/job_detail/?query=python&city=100010000&industry=&position=') def get_info(): lis = driver.find_elements_by_css_selector('.search-job-list-wrap .job-list li') for li in lis: title = li.find_element_by_css_selector('.job-title .job-name a').text # 获取a标签里面文本数据 href = li.find_element_by_css_selector('.job-title .job-name a').get_attribute('href') # 详情页 area = li.find_element_by_css_selector('.job-area').text # 地区 company_name = li.find_element_by_css_selector('.company-text .name a').text # 公司 money = li.find_element_by_css_selector('.job-limit .red').text # 薪资 info = li.find_element_by_css_selector('.job-limit p').text # 学历经验 company_type = li.find_element_by_css_selector('.company-text p a').text # 公司领域 dit = { '职位': title, '地区': area, '公司': company_name, '薪资待遇': money, '学历经验': info, '公司领域': company_type, '详情页': href, } csv_writer.writerow(dit) print(title, area, company_name, money, info, company_type, href) for page in range(1, 11): print(f'正在采集第{page}页的数据内容') get_info() driver.find_element_by_css_selector('.next').click()
三、🎐从二十一到三十案例
1)案例展示
2)Python实现某众点评案例
主程序——
import requests import parsel url = 'https://www.dianping.com/search/keyword/344/0_%E7%81%AB%E9%94%85/p2' headers = { 'Cookie': 'fspop=test; cy=344; cye=changsha; _lxsdk_cuid=181f2b8ceedc8-00c68dfc700b1e-c4c7526-384000-181f2b8ceedc8; _lxsdk=181f2b8ceedc8-00c68dfc700b1e-c4c7526-384000-181f2b8ceedc8; _hc.v=fa46cfdd-99f6-80af-c226-f8777fc1f097.1657634607; s_ViewType=10; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; Hm_lvt_602b80cf8079ae6591966cc70a3940e7=1657634608,1657690542; lgtoken=0ecd60582-14f9-4437-87ad-7b55881b56df; WEBDFPID=3x389w8ww1vw5vuzy491zvxxu36989x2818u39v38389795895568429-1657776946569-1657690545731QSUUAWGfd79fef3d01d5e9aadc18ccd4d0c95072230; dper=6cfaf0f82f34d241b584d587fc92a7117ba6c082354d350ed861c0a256d00ba3beb93db7dc5485b4e2e4e4085a92126fa2e5f1dbe1b6eaefd1c814167fce943e; ll=7fd06e815b796be3df069dec7836c3df; Hm_lpvt_602b80cf8079ae6591966cc70a3940e7=1657690573; _lxsdk_s=181f60e4e6c-cad-fea-c91%7C%7C40', 'Host': 'www.dianping.com', 'Referer': 'https://www.dianping.com/search/keyword/344/0_%E7%81%AB%E9%94%85', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36', } response = requests.get(url=url, headers=headers) selector = parsel.Selector(response.text) href = selector.css('.shop-list ul li .pic a::attr(href)').getall() print(href) for index in href: html_data = requests.get(url=index, headers=headers).text selector_1 = parsel.Selector(html_data) title = selector_1.css('.shop-name::text').get() # 店名 count = selector_1.css('#reviewCount::text').get() # 评论 Price = selector_1.css('#avgPriceTitle::text').get() # 人均消费 item_list = selector_1.css('#comment_score .item::text').getall() # 评价 taste = item_list[0].split(': ')[-1] # 口味评分 environment = item_list[1].split(': ')[-1] # 环境评分 service = item_list[-1].split(': ')[-1] # 服务评分 address = selector_1.css('#address::text').get() # 地址 tel = selector_1.css('.tel ::text').getall()[-1] # 电话 dit = { '店名': title, '评论': count, '人均消费': Price, '口味': taste, '环境': environment, '服务': service, '地址': address, '电话': tel, '详情页': index, } print(dit)
3)Python实现某站自动化弹幕神器
主程序——
import requests import time from tkinter import * import random lis_text = ['666', '主播真厉害', '爱了,爱了', '关注走一走,活到99', '牛逼!!!', '秀儿,是你吗?'] def send(): a = 0 while True: time.sleep(2) send_meg = random.choice(lis_text) roomid = entry.get() ti = int(time.time()) url = 'https://api.live.bilibili.com/msg/send' data = { 'color': '16777215', 'fontsize': '25', 'mode': '1', 'msg': send_meg, 'rnd': '{}'.format(ti), 'roomid': '{}'.format(roomid), 'bubble': '0', 'csrf_token': '08d11cd34efbf3da0d2138d562145e5c', 'csrf': '08d11cd34efbf3da0d2138d562145e5c', } headers = { 'cookie': '_uuid=50D22ECF-208D-9409-DEA1-0B3EA3F74AB793744infoc; buvid3=A0FE83C2-5981-40DC-B0E2-C74A37227ECF155818infoc; rpdid=|(umuummlkY~0J'ulm|ullmll; sid=kr4i59d5; LIVE_BUVID=AUTO3215909029132687; blackside_state=1; CURRENT_FNVAL=80; DedeUserID=406732493; DedeUserID__ckMd5=48c43aca436bb747; SESSDATA=204f478b%2C1615703177%2C53385*91; bili_jct=08d11cd34efbf3da0d2138d562145e5c; dy_spec_agreed=1; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1598946515,1600327358; bp_video_offset_406732493=463816176887860111; _dfcaptcha=90896a21dabbab6ef641f2e393b46913; bsource=search_baidu; PVID=6', 'origin': 'https://live.bilibili.com', 'referer': 'https://live.bilibili.com/blanc/1029?liteVersion=true', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', } a += 1 response = requests.post(url=url, data=data, headers=headers) print(response) text.insert(END, '第{}条弹幕发送成功'.format(a)) # 文本框滚动 text.see(END) # 更新 text.update() text.insert(END, '发送内容:{}'.format(send_meg)) root = Tk() root.title('B站自动发送弹幕') root.geometry('560x450+400+200') label = Label(root, text='请输入房间ID:', font=('华文行楷', 20)) label.grid() entry = Entry(root, font=('隶书', 20)) entry.grid(row=0, column=1) text = Listbox(root, font=('隶书', 16), width=50, heigh=15) text.grid(row=2, columnspan=2) button1 = Button(root, text='开始发送', font=('隶书', 15), command=send) button1.grid(row=3, column=0) button2 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit) button2.grid(row=3, column=1) root.mainloop()
今日的留言话题是:文中哪个案例让你印象最深刻?
(上面案例太多仅随机挑选展示几个小案例,效果没截图,大家拿代码自己演
示哈)你也可以评论区分享文中没有提及的案例,下一期我就可以继续更新案
例实战了哦~
Python经验分享
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!