python练习5 📅 2026/8/16 20:10:49 1.使用正则完成下列内容的匹配- 匹配陕西省区号 029-12345- 匹配邮政编码 745100- 匹配邮箱 lijianxianoupeng.com- 匹配身份证号 62282519960504337Ximport re def regex_matching_task(): # 模拟包含目标信息的文本字符串 text 这里是一些测试数据 陕西省的电话区号是 029-1234567另一个可能是 029-12345。 邮政编码示例745100或者 100871。 电子邮箱lijianxianoupeng.com备用邮箱test_userexample.cn。 身份证号62282519960504337X或者 110101199003072316。 print(--- 正则匹配结果 ---) # 1. 匹配陕西省区号 (029- 开头后面接6或7位数字) # \b 表示单词边界确保不会匹配到长数字串的中间部分 # \d{6,7} 匹配6位或7位数字 pattern_area r\b029-\d{6,7}\b areas re.findall(pattern_area, text) print(f[1] 匹配陕西省区号: {areas}) # 2. 匹配邮政编码 (6位数字) pattern_post r\b\d{6}\b posts re.findall(pattern_post, text) print(f[2] 匹配邮政编码: {posts}) # 3. 匹配邮箱 # [\w.-] 匹配邮箱名支持点和下划线 # 匹配符号 # [\w.-] 匹配域名 # \.\w 匹配后缀如 .com 或 .co.uk (这里简化为至少一个点加字母) pattern_email r[\w.-][\w.-]\.\w emails re.findall(pattern_email, text) print(f[3] 匹配邮箱: {emails}) # 4. 匹配身份证号 (17位数字 最后一位数字或X) # \d{17} 匹配前17位 # [\dX] 匹配最后一位可能是数字也可能是大写X pattern_id r\b\d{17}[\dX]\b ids re.findall(pattern_id, text) print(f[4] 匹配身份证号: {ids}) # 执行第一部分 if __name__ __main__: regex_matching_task()2.爬取学校官网获取所有图片途径并将路径存储在本地文件中使用装饰器完成import requests from bs4 import BeautifulSoup import os import time from urllib.parse import urljoin, urlparse # 1. 定义装饰器 # 这个装饰器用于记录函数的执行时间并打印保存路径 def log_execution(func): def wrapper(*args, **kwargs): start_time time.time() print(f[*] 开始执行: {func.__name__}) result func(*args, **kwargs) end_time time.time() print(f[*] 执行结束: {func.__name__}耗时: {end_time - start_time:.2f}秒) return result return wrapper class SchoolImageSpider: def __init__(self, url, save_dirschool_images): self.base_url url self.save_dir save_dir # 创建保存目录 if not os.path.exists(save_dir): os.makedirs(save_dir) log_execution def fetch_images(self): 爬取图片并保存到本地 try: # 设置请求头模拟浏览器访问防止被拦截 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 } response requests.get(self.base_url, headersheaders, timeout10) response.encoding response.apparent_encoding # 自动检测编码 # 使用BeautifulSoup解析HTML soup BeautifulSoup(response.text, html.parser) # 查找所有 img 标签 img_tags soup.find_all(img) print(f找到 {len(img_tags)} 张图片) # 存储路径的列表 saved_paths [] for idx, img in enumerate(img_tags): img_src img.get(src) if not img_src: continue # 处理相对路径 (如果链接不是以 http 开头则拼接上域名) img_url urljoin(self.base_url, img_src) # 获取图片文件名 img_name os.path.basename(urlparse(img_url).path) if not img_name: img_name fimage_{idx}.jpg # 默认命名 # 定义本地保存路径 local_path os.path.join(self.save_dir, img_name) # 下载图片 try: img_data requests.get(img_url, headersheaders, timeout5).content with open(local_path, wb) as f: f.write(img_data) saved_paths.append(local_path) print(f - 已保存: {img_name}) except Exception as e: print(f - 下载失败 {img_url}: {e}) return saved_paths except Exception as e: print(f请求网页失败: {e}) return [] # --- 主程序运行 --- if __name__ __main__: target_url https://nhjcxy.edu.cn/ # -- 请替换为真实网址 spider SchoolImageSpider(target_url) images spider.fetch_images() print(\n--- 下载完成 ---) print(f共下载 {len(images)} 张图片保存在 {spider.save_dir} 文件夹中。)3.未每日一讲的同学自行录制视频并上传202602041838