使用BeautifulSoup提取URL中产品分类字段并存储为列表
问题场景
- 现有一批结构统一、前缀相同的URL列表,所有URL路径均包含
ingredient-disclosure字段 - 提取规则:
ingredient-disclosure字段后第一个以/分隔的内容即为对应产品分类 - 示例URL:
https://churchdwight.com/ingredient-disclosure/commercial-professional/42000024-ah-trash-can-dumpster-deodorizer.aspx,对应提取值为commercial-professional - 目标:汇总所有URL的提取值,生成去重后的完整产品分类列表
可行实现方案
方案1:Python脚本批量处理(适合千级以上大量URL场景)
无需安装第三方依赖,用Python标准库即可实现,自带异常跳过、自动去重逻辑:
from urllib.parse import urlparse def get_category_list(urls): category_set = set() for url in urls: path_segments = [seg for seg in urlparse(url).path.split("/") if seg] try: marker_pos = path_segments.index("ingredient-disclosure") category_set.add(path_segments[marker_pos + 1]) except (ValueError, IndexError): # 自动跳过格式不符合规则的异常URL continue return sorted(category_set) # 调用示例 if __name__ == "__main__": # 替换成你的URL列表,也可以从txt/CSV文件逐行读取URL all_urls = [ "https://churchdwight.com/ingredient-disclosure/commercial-professional/42000024-ah-trash-can-dumpster-deodorizer.aspx" ] final_categories = get_category_list(all_urls) print("提取完成的产品分类:", final_categories)
方案2:Excel公式处理(适合URL存放在表格中、无代码基础的场景)
假设所有URL存放在表格A列,第一条URL在A2单元格,在B2单元格输入以下公式后下拉填充,即可批量得到每行URL对应的分类值:
=MID(A2,FIND("ingredient-disclosure/",A2)+21,FIND("/",A2,FIND("ingredient-disclosure/",A2)+21)-FIND("ingredient-disclosure/",A2)-21)
注:公式里的21是
ingredient-disclosure/的字符长度,提取完成后选中B列,用Excel自带的「删除重复值」功能即可得到去重后的完整分类列表。
方案3:正则快速提取(适合在编辑器、文本工具中临时提取的场景)
在任何支持正则匹配的工具(VS Code、Notepad++、各类文本编辑器)中,使用以下正则规则匹配内容,取第一个捕获组的结果就是对应分类值:
ingredient-disclosure/([^/]+)/
批量提取所有匹配结果后,做一次去重处理即可得到最终分类列表。
内容的提问来源于stack exchange,提问作者bolbolnuggets
相关产品推荐
相关产品推荐

