基于Python、AutoGPT与ChatGPT提取HTML页面数据的问题咨询
房产数据提取:ChatGPT文本拆分失效原因及AutoGPT方案解析
已通过Scrapy结合CSS选择器实现网站房产数据爬取,但该方式配置耗时且易出错。尝试将原始HTML传入ChatGPT,以指定JSON格式提取房产价格、图片数组、描述、核心特性、街道地址及邮编等信息,但受ChatGPT字符长度限制,拆分文本块后即使提取简单的价格也无法得到预期结果,寻求问题原因及AutoGPT的可行性解决方案。
一、文本拆分后提取失效的核心原因
- 过度清洗丢失关联上下文:代码将HTML转为无格式纯文本并去除所有空白,导致价格与“Listing Price”这类关键标识的关联被破坏,拆分后的单块文本可能仅包含孤立数字或提示词,模型无法识别对应关系。
- 机械拆分切断语义关联:按固定4096字符硬切分文本,可能将价格与其所属的标签、描述性文字拆分到不同块中,单块缺少足够的语义信息支撑模型判断。
- 模型与Prompt设计缺陷:使用的
text-davinci-002模型对碎片化文本的语义理解能力有限,且Prompt仅简单询问价格,未明确告知模型如何在片段中识别目标信息,容错性极低。
二、现有方案的优化方向
1. 保留结构化信息,避免过度清洗
不要将HTML转为纯文本,仅清理无关的script、style、nav、footer等标签,保留核心内容的HTML结构,让模型能通过标签关联识别目标字段。
2. 基于语义模块拆分,而非字符数
根据页面HTML结构拆分模块,比如单独提取价格区、详情区、图片区的HTML代码,确保相关信息在同一个语义块内,避免拆分切断关联。
3. 升级模型并优化Prompt
换用支持更长上下文的gpt-3.5-turbo或gpt-4模型,同时明确Prompt指令,比如指定提取格式、告知模型如何识别目标字段:
从以下HTML片段中提取房产的售价,仅返回数字加货币符号的格式,例如$1,200,000: {chunk}
4. 多块结果整合验证
若必须拆分长文本,收集所有块的提取结果后,再调用模型整合确认最终值,避免单块信息缺失导致的错误。
优化后示例代码
import requests from bs4 import BeautifulSoup import openai import json # 配置OpenAI密钥 openai.api_key = "MYKEY" # 获取页面HTML url = "https://www.corcoran.com/listing/for-sale/170-west-89th-street-2d-manhattan-ny-10024/22053660/regionId/1" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 清理无关标签,保留核心内容 for tag in soup(["script", "style", "nav", "footer", "header"]): tag.extract() # 按语义模块拆分HTML price_module = str(soup.find(class_=["listing-price", "price-display"])) details_module = str(soup.find(class_=["property-details", "listing-summary"])) # 调用gpt-3.5-turbo提取信息 def extract_target_info(chunk, instruction): chat_response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是专业的网页数据提取工具,能精准从HTML片段中提取指定信息"}, {"role": "user", "content": f"{instruction}\n\n{chunk}"} ] ) return chat_response.choices[0].message.content.strip() # 提取价格 price_instruction = "提取房产的售价,仅返回数字和货币符号组成的结果,例如$1,200,000" extracted_price = extract_target_info(price_module, price_instruction) print(f"提取到的价格:{extracted_price}")
三、AutoGPT的可行性分析
适用价值
AutoGPT适合这类需要端到端自动化的任务,它能自主完成以下流程:
- 自动爬取目标页面HTML;
- 分析页面结构,拆分出价格、图片、详情等核心模块;
- 调用GPT模型分别提取各字段信息;
- 将结果整合成指定的JSON格式输出。
优势
无需手动编写拆分逻辑、Prompt,AutoGPT会自主规划处理步骤,减少人工配置成本,尤其适合批量处理多个房产页面的场景。
注意事项
- 成本控制:AutoGPT会多次调用OpenAI API,批量处理时费用会高于手动优化方案;
- 结果校验:AutoGPT的自主决策可能出现偏差,需要设置清晰的任务指令(比如明确要求输出JSON格式、指定提取字段),并增加结果校验环节;
- 环境配置:需要搭建AutoGPT运行环境,配置API密钥及任务目标,初期有一定学习成本。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

