【Python练习五】Python 正则与网络爬虫实战:专项练习(2道经典练习带你巩固基础——看完包会)

第一题

题目:

使用正则完成下列内容的匹配

  • 匹配陕西省区号 029-12345
  • 匹配邮政编码 745100
  • 匹配邮箱 lijian@xianoupeng.com
  • 匹配身份证号 62282519960504337X

代码:

python 复制代码
import re
# 1. 匹配陕西省区号 029-12345
pattern_area = r'^029-\d{5}$'  # 精确匹配 029- 开头,后接5位数字
test_area = '029-12345'
print("区号匹配:", re.match(pattern_area, test_area) is not None)

# 2. 匹配邮政编码 745100
pattern_post = r'^\d{6}$'  # 精确匹配6位数字
test_post = '745100'
print("邮编匹配:", re.match(pattern_post, test_post) is not None)

# 3. 匹配邮箱 lijian@xianoupeng.com
pattern_email = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
test_email = 'lijian@xianoupeng.com'
print("邮箱匹配:", re.match(pattern_email, test_email) is not None)

# 4. 匹配身份证号 62282519960504337X
pattern_id = r'^\d{17}[\dXx]$'  # 17位数字 + 1位数字或X/x
test_id = '62282519960504337X'
print("身份证匹配:", re.match(pattern_id, test_id) is not None)

运行结果:


第二题

题目:

爬取学校官网,获取所有图片途径并将路径存储在本地文件中,使用装饰器完成

代码:

python 复制代码
import requests
import re

# 装饰器:记录爬取任务
def log_crawl_task(func):
    def wrapper(url):
        print(f"开始爬取: {url}")
        result = func(url)
        print(f"爬取完成,共获取 {len(result)} 条图片路径")
        return result
    return wrapper

# 爬取函数
@log_crawl_task
def crawl_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 []

# 保存路径到本地文件
def save_image_paths(paths):
    with open("学校图片路径.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("未获取到任何图片路径")

运行结果:


相关推荐
databook4 分钟前
当散点图不够用时:用 t-SNE 可视化多维数据
python·数据分析·数据可视化
Miao1213113 分钟前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城1 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience2 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao3 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
weixin_408099673 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
爱喝水的鱼丶3 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
去码头整点薯条ing4 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
脱胎换骨-军哥4 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust
songroom4 小时前
Kimi K3:Rust封装XTP接口详细教程实践
开发语言·后端·rust