标签中)和价格(在标签内),并将结果以列表形式返回。”
3、发送后检查AI返回代码是否包含import语句、headers设置、response.status_code判断、soup.find_all()调用及字段提取逻辑。
二、本地运行并分段验证核心环节
AI生成的代码常因状态码异常、选择器失效或编码错误中断执行,需在本地环境逐模块验证行为一致性,而非直接运行全脚本。
1、将代码复制至VS Code,安装依赖:pip install requests beautifulsoup4。
2、在requests.get()后插入print(response.status_code, response.encoding),确认返回200且编码为utf-8。
3、在soup解析后添加print(soup.find('article', class_='product_pod')),验证是否能定位到首个商品容器。
4、对提取字段单独测试:print([t.get_text().strip() for t in soup.select('article.product_pod h3 a')]),观察输出是否为非空字符串列表。
三、针对常见失败场景追加定向优化指令
当基础代码运行失败时,需根据错误类型向豆包AI发起针对性追问,避免泛泛要求“修复爬虫”,而是锁定具体故障点补充增强逻辑。
1、若出现requests.exceptions.ConnectionError,追加提问:“当前爬虫被目标网站拒绝连接,请在请求中加入随机User-Agent和Referer头,并设置timeout=10。”
2、若soup.find_all()返回空列表,追加提问:“页面HTML结构实际为
包裹书籍信息,请将原CSS选择器'article.product_pod'替换为'div.col-xs-6',并调整内部标题与价格路径。”
3、若价格字段含空白符或货币符号干扰,追加提问:“请对price_color文本执行正则提取数字,使用re.search(r'\d+\.\d+', text)并返回float类型值。”
四、注入稳定性机制实现生产级就绪
基础爬虫易因网络抖动、元素加载延迟或服务器限流中断,需通过重试、等待与异常隔离策略提升鲁棒性,该过程需分步向AI索要模块化补丁。
1、在导入区下方插入重试逻辑声明:“请添加tenacity库的重试装饰器,对requests.get调用设置stop_after_attempt(3)和wait_fixed(2)。”
2、在解析前插入显式等待:“若response.text长度小于1000,暂停1.5秒后重新获取,最多重试2次。”
3、对字段提取封装安全访问:“请用soup.select_one()替代find(),并在每个提取操作外包裹try-except,缺失时返回None而非抛出AttributeError。”
五、结构化输出与多格式持久化扩展
原始输出仅限控制台打印,需主动引导AI生成CSV、JSON或SQLite写入模块,确保数据可被下游系统直接消费,避免手动二次处理。
1、在代码末尾添加指令:“请追加函数save_to_csv(data_list, filename='books.csv'),将列表中每个字典写入CSV,字段名为title和price,使用utf-8-sig编码防止中文乱码。”
2、若需JSON格式,追加提问:“替换save_to_csv为save_to_json,使用json.dump(..., ensure_ascii=False)保持中文可读。”
3、对字段缺失情况统一处理:“在保存前过滤掉title或price为None的条目,确保CSV每行均有完整字段。”