如何将网页爬取的车辆主数据与额外数据存入数据库同一行?
解决车辆主数据与详情页数据同存一行的方案
方案1:先暂存完整数据,统一插入
- 遍历列表页的每辆车,先抓取车辆名称、座位数、车门数、变速箱类型、车型、价格、图片等主数据,将每辆车的主数据存入一个字典(如
car_info),并把这些字典放到一个列表(如all_cars)里暂存。 - 对每辆车,点击进入详情页爬取保险、额外驾驶员相关数据,直接把这些字段追加到对应的
car_info字典中。 - 等所有车辆的完整数据都收集完毕后,再批量将
all_cars中的每条数据插入cardata表,这样每辆车的主数据和详情数据就会存在同一行。
方案2:先插主数据拿主键,再更新详情
- 处理列表页车辆时,抓取主数据后直接插入
cardata表,插入后获取该条数据的主键(比如自增id),把主键和当前车辆的唯一标识(如车辆名称+价格的组合,或页面元素的data-id属性)绑定保存。 - 进入详情页抓取额外数据后,根据之前保存的主键,执行
UPDATE语句,把保险、额外驾驶员等字段更新到对应主键的行中。 - 注意:必须确保车辆标识的唯一性,避免更新错误的行。
核心注意点
- 页面跳转时要维护好上下文,比如用新标签页打开详情页,处理完后关闭并切回列表页;或者记录当前窗口句柄,切换回来继续处理下一辆。
- 遍历车辆时要严格按顺序处理,保证主数据和详情数据的对应关系不混乱。
- 若车辆数量少(比如你这里的3辆),方案1的内存暂存方式更简单高效;如果车辆数量极大,方案2更节省内存。
内容的提问来源于stack exchange,提问作者Singh
相关产品推荐
相关产品推荐

