今天跟大家分享一些超酷的Python小技巧。这些技巧不仅有趣,而且实用到爆,让你的生活更加智能化。
使用selenium和urllib下载图片
想要从网上批量下载图片?用Python轻松搞定!只需要几行代码,你就可以从知乎这样的大型网站上下载你感兴趣的图片啦。这里用到的是selenium和urllib,简直就是抓图利器!
亲爱的朋友,跟着我一起来学习这段Python代码,它可以帮我们在知乎网站上爬取图片!
首先需要提醒您,这段代码需要安装Python环境和一些第三方库,如果您没有编程基础,建议找懂行的朋友帮忙安装和运行。
# 导入Selenium的webdriver模块,用于控制浏览器
import selenium.webdriver as driver
# 导入时间模块,用于控制爬取速度
import time
# 导入urllib库,用于图片下载
import urllib.request
# 启动Chrome浏览器,进入最大化模式
browser = driver.Chrome()
browser.maximize_window()
# 设置爬取的网址为“这个回答下的图片”
target_url = "https://www.zhihu.com/question/29134042"
# 打开目标网页
browser.get(target_url)
# 循环10页数据
for page in range(10):
# 网页朝下滑动到底部,加载更多图片
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 暂停2秒,等待页面加载
time.sleep(2)
try:
# 尝试点击“显示更多回答”按钮,加载下一页数据
browser.find_element_by_css_selector('button.QuestionMainAction').click()
# 打印已爬取的页数
print("已爬取第" + str(page) + "页")
# 暂停1秒,避免频繁点击被封IP
time.sleep(1)
# 如果无法点击按钮,通常代表已到最后一页
except:
break
# 获取当前页面的HTML源代码
page_html = browser.page_source
# 使用正则表达式提取图片URL
img_list = re.findall("img src=\\"(.+?)\\" ", page_html)
# 定义一个数值n,记录图片下载数量
n = 0
# 遍历图片URL列表
for img_url in img_list:
# 生成一个唯一的文件名,作为图片保存名字
name = str(time.time()) + ".jpg"
# 调用urllib库,下载图片到本地
urllib.request.urlretrieve(img_url, name)
# 打印已下载的图片数
print("已下载第"+ str(n) + "张图片")
# n增加1,开始下一张图片的下载
n += 1
第一次看到这段代码的时候,或许会有些云里雾里的感觉。但是只要慢慢理解,你会发现其实原理很简单明了!
利用Selenium打开Chrome浏览器,自动点击翻页按钮爬取图片;用正则表达式提取图片URL;然后用urllib一个个图片地下载到本地。
良心推荐!这段代码虽然只有30行,但把整个爬取思路展现得很完整,新手可以作为示例代码进行学习,一定可以大大提高编程能力!
有没有想过让多个机器人聊天?Python可以帮你实现这个有趣的想法。通过调用机器人们的接口,你可以看到它们之间的有趣对话。说不定还能从中获得一些人工智能的灵感呢!
from time import sleep #导入sleep函数,控制执行间隔
import requests #导入请求库
print('欢迎来到多机器人聊天系统!')
topic = input('请输入话题开始聊天:')#读取用户输入的话题
while True: #无限循环
#发送话题给小潘机器人,获取回复
pan_reply = get_pan_reply(topic)
print('小潘:'+pan_reply)
sleep(1)
#小潘的回复作为新话题,发送给小洋机器人
yang_reply = get_yang_reply(pan_reply)
print('小洋:'+yang_reply)
sleep(1)
print('请和小萝进行交流:')
user_input = input()#获取用户输入
#用户输入发送给小萝机器人
luo_reply = get_luo_reply(user_input)
print('小萝:'+luo_reply)
sleep(1)
主要思路是:
用户输入话题
话题交给小潘机器人回复,得到回复1
将回复1作为新话题,交给小洋机器人回复,得到回复2
用户输入语句,发送给小萝机器人回复
这样我们就实现了一个多机器人聊天的系统!
这个系统的魅力就在于,我们可以把控制权先交给机器人,看它们之间如何互动!过程一定很有意思!
代码非常简单,只要实现其中的3个获取回复的函数,就可以顺利运行。相信通过这个示例,可以帮助你对 python 爬虫和聊天机器人有更深的理解!
接下来我要带你学习如何使用Python代码与智能小i机器人互动聊天!
在开始coding之前,需要确保Python环境已经安装完成。如果你是编程小白,建议找到懂行的朋友提供帮助
# 导入请求模块urllib,用于连接小i机器人
import urllib.request
# 导入正则表达式re,用于提取响应文本
import re
print('你可以和小i随意聊天了:')
# 执行循环,使对话持续有趣
while True:
# 读取用户语句
user_words = input('用户:')
# 对语句进行URL编码,可添加特殊字符
encoded_words = urllib.parse.quote(user_words)
# 构建HTTPS请求链接
request_url = 'https://api.xiaoi.com/...' + encoded_words
# 发送网络请求,获取小i响应
response = urllib.request.urlopen(request_url)
# 解码响应内容,得到文本
html_text = response.read().decode()
# 使用正则表达式提取回复
reply_list = re.findall('"content":"(.+?)","', html_text)
# 打印回复内容
print('小i:' + reply_list[-1])
主要逻辑就是:
用户输入语句
对语句编码,构建请求
获取小i响应,提取文本
正则匹配回复内容
打印输出
这样我们就可以无限循环地与小i机器人畅所欲言!
接下来我要教大家如何判断一句古诗是否出自诗圣李白之手!只需要几行python代码就可以实现!
在我们开始coding前,需要确保环境配置正确哦。如果你是编程小白,建议找懂行的帮忙安装和运行。
废话不多说了,让我们直奔主题,一睹这个判断李白的神奇代码!
# 1. 导入分词模块jieba,用于切割文本
import jieba
# 2. 导入朴素贝叶斯分类器
from nltk.classify import NaiveBayesClassifier
# 3. 准备李白和杜甫的诗歌语料
libai_text = open('./libai.txt').read()
dufu_text = open('./dufu.txt').read()
# 4. 对诗歌语料分词,提取诗歌词汇
libai_words = jieba.cut(libai_text)
dufu_words = jieba.cut(dufu_text)
# 5. 构建词汇特征
def get_word_features(words):
return dict([(w, True) for w in words])
# 6. 提取李白和杜甫的词汇特征
libai_feats = [(get_word_features(lw), '李白') for lw in libai_words]
dufu_feats = [(get_word_features(dw), '杜甫') for dw in dufu_words]
# 7. 基于特征,训练朴素贝叶斯分类器
classifier = NaiveBayesClassifier.train(libai_feats + dufu_feats)
# 8. 利用分类器判断输入诗句的作者
user_poem = input('请输入您喜欢的一句诗:')
poem_words = get_word_features(jieba.cut(user_poem))
author = classifier.classify(poem_words)
print('您输入的诗句应该是出自“%s”之手!' % author)
整个判断流程包括:
获取李白和杜甫的语料
分词提取词汇
构造词汇特征
基于特征训练分类器
用分类器判断输入诗句的作者
这样我们就实现了一个智能的诗歌鉴别器!简直是神器啊!
这段代码虽然短小,但技术原理和运用都很到位!快去波着啊!如果你在使用过程中遇到什么问题,也欢迎在评论区和我讨论!
随机产生35选7号码
猜不透彩票的号码?让Python来帮你随机选择吧!今天要教大家如何通过简单的random模块用几行Python代码随机生成双色球号码!赶快把笔记本准备好,我们马上开始讲解!
在运行代码前,需要确保Python环境已经安装完成。如果你是小白用户,建议找懂行的朋友提供帮助。
好,让我们正式启航,一睹这个神奇号码生成器的芳容:
import random 1. 导入随机数模块
number_pool = list(range(1, 36)) 2. 定义号码池
random.shuffle(number_pool) 3. 随机打乱号码
red_balls = []
4. 存放红球
for i in range(6):
red_balls.append(number_pool[i])
red_balls.sort()
blue_ball = number_pool[6] 5. 取第7个为蓝球
print(red_balls) 打印红球
print(blue_ball) 打印蓝球
整个流程就是:
准备1-35的号码
随机打乱号码
取前6个为红球
第7个为蓝球
这样我们就实现了一个双色球随机号码生成器!
是不是感觉特别简单?!这个小例子运用非常广泛,比如用在抽奖程序等场景。
根据表格中的句子随机生成检讨书内容
最近我又学了一个小技能,可以自动生成检讨书!是不是很神奇很有趣~ 如果你需要写检讨书,但又苦于无从下手,Python也能帮到你。只需准备一些常用句式,Python就能自动生成一篇看起来非常真诚的检讨书,帮你解决燃眉之急。
import random # 1. 导入随机库
import xlrd # 2. 导入Excel读取库
data = xlrd.open_workbook('data.xlsx') # 3. 打开 EXEMPLARY 语句库
sheet = data.sheet_by_name('Sheet1') # 4. 获取工作表
event = input('请输入过错事件:') # 5. 用户输入事件
words_num = int(input('请输入所需字数:')) # 6. 输入字数
letter = [] # 7. 定义检讨书内容
while len(letter) < words_num * 1.2:
row = random.randint(1, 60) # 8. 随机取一行 EXEMPLARY 语句
row_text = sheet.row_values(row)
letter.append(row_text)
print('检讨书\n老师您好:\n我不应该%s,' % event, *letter)
# 9. 构建检讨书文本
主要逻辑就是:
读取 EXAMPLE 语句库
用户输入事件和字数
随机取语句拼接成检讨书
这样我们就可以自动生成检讨书啦!是不是瞬间效率翻倍!
这个示例代码虽然简单,但应用很广泛。相信可以给大家在实际开发中提供很多启发和帮助!
使用PIL图像处理库进行屏幕捕获和录像
想要记录你的屏幕操作吗?Python可以通过PIL库帮你抓取屏幕,甚至制作成视频。无论是制作教程还是记录游戏精彩瞬间,这都是一个非常有用的工具。
from time import sleep # 1. 导入sleep函数
from PIL import ImageGrab # 2. 导入ImageGrab模块
record_minutes = int(input('请输入录制时长(分钟)')) # 3. 用户输入录制时长
minutes_to_seconds = record_minutes * 60 # 4. 转化为秒数
screenshot_num = 0 # 5. 初始化截图张数
while screenshot_num < minutes_to_seconds: # 6. 检测是否结束
sleep(0.1)
img = ImageGrab.grab() # 7. 抓取屏幕
path = '%s.jpg' % screenshot_num # 8. 定义保存路径
img.save(path, 'jpeg') # 9. 保存截图
screenshot_num += 1 # 10. 累加截图数
整个思路就是:
读取用户录制分钟数
转化为秒,并初始化截图数
循环截图,直到结束录制
这样我们就实现了屏幕录制功能!是不是特别简洁明了?
这个小功能在很多实际场景都能派上用场,你也可以结合其他代码,搭建成一个完整的应用!
使用PIL库将图片序列制作成GIF动图
GIF动图越来越流行,用Python自制GIF动图简直不能更酷!只需几张图片和简单的代码,你就能创造出有趣的GIF来表达你的情感或者分享你的故事。
Python不仅仅是一种编程语言,它是一种工具,一种艺术,一种让生活更加丰富多彩的方式。所以,不要重复造轮子,用好现有的轮子,让生活变得更加智能和有趣!
废话不多说,让我们直接查看代码:
from PIL import Image # 1. 导入图像处理模块
first_img = Image.open('1.jpg') # 2. 打开第一张图片
img_list = []
img_list.append(Image.open('2.jpg')) # 3. 添加第二张
img_list.append(Image.open('3.jpg')) # 4. 添加第三张
first_img.save('result.gif', save_all=True, append_images=img_list, loop=0)
# 5. 保存为GIF动图
主要就分几个步骤:
打开首图片
将其他图片加入列表
调用save接口保存为GIF
是不是超级简单呢?
这个小案例就是运用Python的PIL图像处理库,来批量处理图片和生成GIF动图。
它的应用场景很多,比如把零散的商品图片打包成G