顶部右侧自定义内容
顶部左侧自定义内容
当前位置:首页 > 我的文章 > 正文

怎么使用AI提高软件开发效率

作者:neal发布时间:2026-02-28 17:14分类: 我的文章 浏览:127评论:0


导读: 你想了解在编写 Python 爬虫时需要重点关注和注意的事项,这是一个非常关键的问题,尤其是对于新手来说,掌握这些要点能让你的爬虫更合规、更稳定、更高效。 &...
你想了解在编写 Python 爬虫时需要重点关注和注意的事项,这是一个非常关键的问题,尤其是对于新手来说,掌握这些要点能让你的爬虫更合规、更稳定、更高效。
 

一、核心注意事项(按优先级排序)

 

1. 遵守法律法规与网站规则(最重要)

 
  • robots 协议:几乎所有网站根目录下都有 robots.txt(如 https://www.xxx.com/robots.txt),它规定了网站允许 / 禁止爬虫访问的内容。虽然不具备法律强制力,但遵守它是爬虫开发者的基本操守。
    python
     
    运行
     
     
     
     
    # 示例:查看并解析robots.txt(使用robotparser库)
    from urllib.robotparser import RobotFileParser
    
    rp = RobotFileParser()
    rp.set_url('https://www.baidu.com/robots.txt')
    rp.read()
    # 检查是否允许爬取某个路径
    print(rp.can_fetch('*', 'https://www.baidu.com/s'))  # 返回True/False
    
     
     
  • 法律红线
    • 不得爬取涉及隐私、敏感信息(如用户手机号、身份证、未公开的商业数据)的内容;
    • 不得突破网站的访问限制(如破解登录、绕过反爬措施进行恶意爬取);
    • 爬取的数据不得用于非法用途(如倒卖、侵权)。
     
  • 网站条款:很多网站的 “用户协议” 里明确禁止爬虫,爬取前务必查看。
 

2. 控制爬取频率,避免给服务器造成压力

 
  • 设置请求间隔:使用 time.sleep() 或更灵活的 random.uniform() 随机间隔,避免高频请求。
    python
     
    运行
     
     
     
     
    import time
    import random
    
    # 每次请求后随机等待1-3秒
    time.sleep(random.uniform(1, 3))
    
     
     
  • 限制并发数:使用 requests.Session() 保持连接复用,或用 aiohttp 异步爬虫时控制并发量(避免同时发起上百个请求)。
  • 避免高峰期爬取:尽量在网站访问低峰期(如凌晨)爬取,减少对服务器的影响。
 

3. 处理反爬机制

 
新手最常遇到的问题就是被网站反爬,核心应对思路是 “模拟真人行为”:
 
  • 设置请求头(Headers):至少带上 User-Agent(模拟浏览器),必要时补充 RefererCookieAccept 等。
    python
     
    运行
     
     
     
     
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        'Referer': 'https://www.xxx.com/'  # 表示请求来源
    }
    response = requests.get('https://www.xxx.com', headers=headers)
    
     
     
  • 使用代理 IP:如果爬取量较大,单一 IP 容易被封禁,可使用免费 / 付费代理池轮换 IP。
    python
     
    运行
     
     
     
     
    proxies = {
        'http': 'http://123.45.67.89:8080',
        'https': 'https://123.45.67.89:8080'
    }
    response = requests.get('https://www.xxx.com', proxies=proxies)
    
     
     
  • 处理验证码:简单验证码可使用 ddddocr 识别,复杂验证码(滑块、点选)可考虑第三方打码平台,或直接绕开(如模拟登录后携带 Cookie)。
  • 动态渲染页面:如果页面是 JS 动态加载的(如 Ajax、Vue/React 渲染),可使用 SeleniumPlaywright 模拟浏览器渲染,或直接抓包获取接口数据(更高效)。
 

4. 代码健壮性与数据处理

 
  • 异常处理:对网络请求、数据解析、文件读写等环节加异常捕获,避免爬虫中途崩溃。
    python
     
    运行
     
     
     
     
    import requests
    from requests.exceptions import RequestException
    
    try:
        response = requests.get('https://www.xxx.com', timeout=10)
        response.raise_for_status()  # 抛出HTTP状态码异常(如404、500)
        response.encoding = response.apparent_encoding  # 自动识别编码
    except RequestException as e:
        print(f'请求失败:{e}')
    
     
     
  • 数据持久化:爬取的数据及时保存(如 CSV、JSON、MySQL),避免爬取完成后数据丢失。
  • 去重与校验:对爬取的 URL、数据内容做去重处理,校验数据格式(如手机号、邮箱),保证数据准确性。
 

5. 其他实用技巧

 
  • 使用 Session 保持会话:爬取需要登录的网站时,用 requests.Session() 保存 Cookie,避免重复登录。
  • 日志记录:使用 logging 模块记录爬虫运行日志(如请求成功 / 失败、爬取数量),方便排查问题。
    python
     
    运行
     
     
     
     
    import logging
    
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        filename='spider.log'  # 日志保存到文件
    )
    logging.info('爬虫启动')
    logging.error('请求失败:IP被封禁')
    
     
     
  • 分布式 / 增量爬取:如果爬取量极大,可使用 Scrapy-Redis 实现分布式爬虫;定期爬取时,只爬取新增内容(增量爬取),减少资源消耗。
 

总结

 
  1. 合规优先:遵守 robots 协议和法律法规,不爬取敏感数据,这是爬虫开发的底线;
  2. 模拟真人:控制爬取频率、设置合理请求头、使用代理 IP,避免被网站反爬封禁;
  3. 健壮性:做好异常处理、日志记录和数据持久化,保证爬虫稳定运行且数据不丢失。
 
掌握这些要点,你的 Python 爬虫不仅能完成基本的爬取任务,还能在合规、稳定、高效上达到更专业的水平。
 
如果用Python来做app自动化测试
你想了解如何用 Python 来实现 APP 自动化测试,这是移动端测试中非常实用的技能,Python 凭借丰富的库和简洁的语法,成为 APP 自动化测试的主流选择。
 

一、核心技术栈选择

 
做 APP 自动化测试,Python 生态下最主流的是 Appium + Python 组合,它支持 iOS 和 Android 双平台,且能跨应用测试,是行业通用方案。
 

1. 环境准备(关键前置步骤)

 
在写代码前,必须先搭好环境,这是新手最容易踩坑的地方:
 
  • 基础环境:Python 3.7+(推荐 3.8-3.10)、pip 包管理工具
  • 移动端依赖
    • Android:安装 Android SDK(或 Android Studio),配置ANDROID_HOME环境变量;确保设备 / 模拟器开启 USB 调试
    • iOS:需 Mac 系统,安装 Xcode、WebDriverAgent
     
  • 核心库安装
    bash
     
    运行
     
     
     
     
    # 安装Appium Python客户端
    pip install appium-python-client
    # 可选:安装pytest用于测试用例管理,allure用于测试报告
    pip install pytest pytest-html allure-pytest
    
     
     
  • Appium 服务:下载并安装 Appium Server(或用命令行启动appium),用于连接 Python 脚本和移动设备。
 

2. 核心代码示例(Android 端)

 
以下是一个完整的 APP 自动化测试示例(以打开 “设置” APP,点击 “WLAN” 为例),包含最核心的元素定位、操作和异常处理:
 
python
 
运行
 
 
 
 
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 1. 配置Desired Capabilities(核心配置,告诉Appium要操作的设备/APP)
desired_caps = {
    "platformName": "Android",          # 系统类型:Android/iOS
    "platformVersion": "11",            # 系统版本(如手机的Android版本)
    "deviceName": "emulator-5554",      # 设备名(模拟器/真机序列号,可通过adb devices查看)
    "appPackage": "com.android.settings",  # APP包名(需测试的APP包名)
    "appActivity": ".Settings",         # APP启动页Activity
    "noReset": True,                    # 不重置APP数据(避免每次启动都重新授权)
    "automationName": "UiAutomator2"    # Android自动化引擎(必选)
}

# 2. 初始化驱动,连接Appium服务(默认端口4723)
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 设置隐式等待:查找元素时最多等10秒
driver.implicitly_wait(10)

try:
    # 3. 定位元素并操作(以点击“WLAN”为例)
    # 方式1:通过XPath定位(最通用)
    wlan_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((AppiumBy.XPATH, "//*[@text='WLAN']"))
    )
    wlan_element.click()
    print("成功点击WLAN选项")

    # 额外示例:返回上一页
    driver.back()
    time.sleep(1)

    # 方式2:通过ID定位(更高效,需提前获取元素ID)
    # network_element = driver.find_element(AppiumBy.ID, "com.android.settings:id/network_settings")
    # network_element.click()

except NoSuchElementException:
    print("错误:未找到WLAN元素")
except TimeoutException:
    print("错误:查找WLAN元素超时")
except Exception as e:
    print(f"测试异常:{str(e)}")
finally:
    # 4. 关闭驱动,释放资源
    driver.quit()
    print("测试结束,已关闭驱动")
 
 

3. 关键知识点解释

 
  • Desired Capabilities:是字典格式的配置项,核心参数必须准确,否则无法连接设备 / 启动 APP:
    • appPackage/appActivity:Android APP 的核心标识,可通过aapt dump badging 应用包名.apk命令获取;
    • deviceName:通过adb devices命令查看设备列表即可获取;
     
  • 元素定位:APP 自动化的核心是定位控件,常用方式:
    定位方式 适用场景 示例
    XPath 通用,无 ID 时优先使用 //*[@text='WLAN']
    ID 效率最高,优先使用 com.android.settings:id/xxx
    Accessibility ID iOS/Android 通用 driver.find_element(AppiumBy.ACCESSIBILITY_ID, "WLAN")
     
  • 等待机制
    • 隐式等待:全局生效,设置一次即可(如driver.implicitly_wait(10));
    • 显式等待:针对特定元素,更灵活(如示例中WebDriverWait),推荐优先使用显式等待,避免元素未加载完成导致的报错。
     
 

4. 进阶技巧

 
  • APP 安装与启动:如果需要自动化安装 APP,可在desired_caps中添加"app": "/path/to/xxx.apk"(本地 APK 路径);
  • 多设备并行测试:使用appium-python-client结合pytest-xdist实现多设备同时测试,提升效率;
  • 测试报告生成:用pytest-html生成 HTML 报告,或allure生成更美观的可视化报告;
  • 手势操作:通过TouchActionActionChains实现滑动、点击、长按等操作(如滑动页面找元素):
    python
     
    运行
     
     
     
     
    # 示例:从下往上滑动页面
    driver.swipe(start_x=500, start_y=1500, end_x=500, end_y=500, duration=500)
    
     
     
  • 混合应用测试:如果 APP 包含 H5 页面,需切换到 WebView 上下文,才能定位 H5 元素。
 

总结

 
  1. 核心框架:Python 做 APP 自动化测试首选Appium + Python,需先配置好 Android/iOS 环境和 Appium 服务;
  2. 核心步骤:配置Desired Capabilities → 初始化驱动 → 定位元素 → 执行操作 → 异常处理 → 释放资源;
  3. 关键技巧:优先用显式等待保证稳定性,元素定位优先选 ID(高效),其次用 XPath(通用),做好异常捕获避免脚本崩溃。
 
掌握这些基础后,你可以结合pytest组织测试用例集,实现批量自动化测试,再配合 CI/CD 工具(如 Jenkins)可实现自动化测试流水线。
 
怎么使用AI提高软件开发效率
你想知道如何利用 AI 工具和技术来提升软件开发的整体效率,这是当下开发者最关注的方向之一 ——AI 能从编码、调试、文档到协作等全流程帮你节省时间、降低出错率。
 

一、AI 提升开发效率的核心场景(附实操方法)

 

1. 代码编写:从 “从零手写” 到 “AI 辅助生成”

 
AI 能帮你快速生成基础代码、补全逻辑、优化写法,大幅减少重复劳动。
 
  • 核心工具:GitHub Copilot(最主流)、Cursor(AI 编辑器)、通义灵码 / 阿里云 AI 编程助手(国内)、ChatGPT / 豆包(对话式生成)。
  • 实操示例
    • 需求描述式生成:在 Copilot 中输入注释 # 用Python写一个函数,批量读取文件夹下所有CSV文件并合并成一个DataFrame,处理空值和重复行,AI 会直接生成完整代码:
      python
       
      运行
       
       
       
       
      import pandas as pd
      import os
      
      def merge_csv_files(folder_path, output_file="merged.csv"):
          """
          批量读取文件夹下所有CSV文件并合并,处理空值和重复行
          :param folder_path: CSV文件所在文件夹路径
          :param output_file: 合并后的输出文件路径
          :return: 合并后的DataFrame
          """
          # 获取文件夹下所有CSV文件
          csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
          if not csv_files:
              raise ValueError("文件夹中未找到CSV文件")
      
          # 读取并合并所有CSV
          df_list = []
          for file in csv_files:
              file_path = os.path.join(folder_path, file)
              df = pd.read_csv(file_path)
              df_list.append(df)
      
          merged_df = pd.concat(df_list, ignore_index=True)
          # 处理空值(删除全为空的行,其余空值填充为0)
          merged_df = merged_df.dropna(how='all')
          merged_df = merged_df.fillna(0)
          # 去重
          merged_df = merged_df.drop_duplicates()
      
          # 保存结果
          merged_df.to_csv(output_file, index=False)
          return merged_df
      
       
       
    • 代码补全:写一半逻辑(如循环遍历列表),AI 会自动补全剩余代码,甚至优化循环写法(如改用列表推导式)。
     
  • 技巧:描述需求时越具体(如指定语言、框架、功能细节),AI 生成的代码越精准,减少后续修改成本。
 

2. 调试与排错:AI 帮你快速定位问题、给出解决方案

 
调试是开发中最耗时的环节之一,AI 能快速分析报错信息、代码逻辑,给出修复建议。
 
  • 核心工具:ChatGPT / 豆包(上传报错日志 + 相关代码)、GitHub Copilot Chat、DeepCode(代码静态分析)。
  • 实操示例
     
    你遇到 Python 报错 KeyError: 'name',将报错信息 + 相关代码发给 AI:
    python
     
    运行
     
     
     
     
    # 你的代码
    data = {"age": 20}
    print(data['name'])
    
     
     
    AI 会立刻分析:
    • 原因:字典data中没有name键,直接取值触发KeyError
    • 解决方案:① 先判断键是否存在 print(data.get('name', '默认值'));② 用try-except捕获异常。
       
      并给出修复后的完整代码:
     
    python
     
    运行
     
     
     
     
    data = {"age": 20}
    # 方案1:使用get方法(推荐)
    name = data.get('name', '未知')
    print(name)  # 输出:未知
    
    # 方案2:try-except捕获异常
    try:
        print(data['name'])
    except KeyError as e:
        print(f"键不存在:{e}")  # 输出:键不存在:'name'
    
     
     
  • 技巧:提供报错信息时,务必附上完整报错堆栈+相关代码片段(不要只发一句 “代码报错了”),AI 才能精准定位问题。
 

3. 文档与注释:AI 自动生成 / 优化文档,降低沟通成本

 
好的文档和注释能提升团队协作效率,但手动编写耗时,AI 可一键生成。
 
  • 核心工具:ChatGPT / 豆包、GitHub Copilot(自动生成函数注释)、Docusaurus + AI 插件(文档站点生成)。
  • 实操示例
     
    给一段无注释的复杂函数,让 AI 生成规范的注释:
    python
     
    运行
     
     
     
     
    # 无注释的函数
    def calculate_order_amount(products, discount_rate=0.1):
        total = sum(p['price'] * p['quantity'] for p in products)
        if total > 1000:
            total *= (1 - discount_rate)
        return round(total, 2)
    
     
     
    AI 生成的注释(符合 PEP8 规范):
    python
     
    运行
     
     
     
     
    def calculate_order_amount(products, discount_rate=0.1):
        """
        计算订单总金额,满1000元享受指定折扣
    
        :param products: 订单商品列表,每个元素为字典,包含'price'(单价)和'quantity'(数量)键
        :type products: list[dict]
        :param discount_rate: 折扣率(默认0.1,即10%)
        :type discount_rate: float
        :return: 四舍五入到小数点后2位的订单总金额
        :rtype: float
        :example:
            >>> products = [{'price': 100, 'quantity': 5}, {'price': 200, 'quantity': 3}]
            >>> calculate_order_amount(products)
            1080.0
        """
        total = sum(p['price'] * p['quantity'] for p in products)
        if total > 1000:
            total *= (1 - discount_rate)
        return round(total, 2)
    
     
     
  • 技巧:让 AI 生成文档时,指定格式(如 Markdown、RESTful API 文档规范),便于直接复用。
 

4. 需求分析与设计:AI 帮你梳理需求、生成设计方案

 
开发前期的需求梳理和架构设计也能借助 AI 提升效率。
 
  • 核心工具:ChatGPT / 豆包(需求转用例、生成 ER 图描述)、Mermaid AI(自动生成流程图 / 架构图)。
  • 实操示例
     
    输入需求:“设计一个用户登录模块,包含手机号验证码登录、密码登录,需记录登录日志,限制单日错误次数(5 次)”,AI 会帮你:
    1. 拆解核心功能点(验证码生成 / 校验、密码加密、日志存储、次数限制);
    2. 给出数据库表设计(用户表、登录日志表);
    3. 生成核心接口的设计思路(请求参数、响应格式、异常处理)。
     
 

5. 测试与重构:AI 辅助生成测试用例、优化代码质量

 
  • 测试用例生成:给 AI 一段业务代码,让其生成单元测试用例(如 pytest 格式),覆盖正常场景、边界场景、异常场景;
  • 代码重构:让 AI 分析现有代码的问题(如冗余、性能瓶颈、不符合设计模式),并给出重构后的版本(如将重复代码抽成函数、优化循环效率)。
 

二、使用 AI 的注意事项(避免踩坑)

 
  1. 不盲目信任 AI:AI 生成的代码可能有 bug、安全漏洞或不符合业务逻辑,务必人工审核 + 测试验证
  2. 保护敏感信息:不要将公司核心代码、数据库密码、用户数据等敏感信息输入到公共 AI 工具中;
  3. 结合自身知识:AI 是辅助工具,不是替代开发者,需理解 AI 生成代码的逻辑,避免 “抄代码但不懂原理”;
  4. 选择合适工具:不同 AI 工具的侧重点不同(如 Copilot 适合编码、ChatGPT 适合调试和文档),按需选择。

标签:


发表评论: