【Python练习五】Python 正则与网络爬虫实战:专项练习(2道经典练习带你巩固基础——看完包会)
第一题
题目:
使用正则完成下列内容的匹配
- 匹配陕西省区号 029-12345
- 匹配邮政编码 745100
- 匹配邮箱 [email protected]
- 匹配身份证号 62282519960504337X
代码:
import re # 1. 匹配陕西省区号 029-12345 pattern_area =r'^029-\d{5}$'# 精确匹配 029- 开头,后接5位数字 test_area ='029-12345'print("区号匹配:", re.match(pattern_area, test_area)isnotNone)# 2. 匹配邮政编码 745100 pattern_post =r'^\d{6}$'# 精确匹配6位数字 test_post ='745100'print("邮编匹配:", re.match(pattern_post, test_post)isnotNone)# 3. 匹配邮箱 [email protected] pattern_email =r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' test_email ='[email protected]'print("邮箱匹配:", re.match(pattern_email, test_email)isnotNone)# 4. 匹配身份证号 62282519960504337X pattern_id =r'^\d{17}[\dXx]$'# 17位数字 + 1位数字或X/x test_id ='62282519960504337X'print("身份证匹配:", re.match(pattern_id, test_id)isnotNone)运行结果:

第二题
题目:
爬取学校官网,获取所有图片途径并将路径存储在本地文件中,使用装饰器完成
代码:
import requests import re # 装饰器:记录爬取任务deflog_crawl_task(func):defwrapper(url):print(f"开始爬取: {url}") result = func(url)print(f"爬取完成,共获取 {len(result)} 条图片路径")return result return wrapper # 爬取函数@log_crawl_taskdefcrawl_school_images(url):try:# 基础请求配置,避免被反爬 headers ={"User-Agent":"Mozilla/5.0"} response = requests.get(url, headers=headers, timeout=10) response.encoding ="utf-8"# 确保中文路径不乱码# 正则提取img标签的src属性 img_paths = re.findall(r'<img src="(.*?)"', response.text)return img_paths except Exception as e:print(f"爬取失败: {str(e)}")return[]# 保存路径到本地文件defsave_image_paths(paths):withopen("学校图片路径.txt","w", encoding="utf-8")as f: f.write("\n".join(paths))print("图片路径已保存到 学校图片路径.txt")# 调用示例if __name__ =="__main__": school_url ="https://www.cqcst.edu.cn" image_paths = crawl_school_images(school_url)if image_paths: save_image_paths(image_paths)else:print("未获取到任何图片路径")运行结果:

