如果你用抓取(scraping)数据来搭建 prospect list,你迟早会遇到这个问题:我该怎么在线清洗并标准化这些数据?

如果你试过用 Google Sheets 来清理,就会发现它并不是为这类任务设计的。

比如:LinkedIn 导出的字段通常只有一个「full name」,但其他来源可能分别给你 first name 和 last name。Email 地址可能在抓取过程中出现拼写错误。日期格式五花八门……

这篇指南会带你解决 99% 的抓取数据问题。剩下那 1%,直接联系我,我来帮你搞定 👨‍💻

下面是本文会覆盖的清洗操作速览:

从 CSV 导入或直接复制粘贴数据

Datablist 非常适合做数据清洗。它是一个在线 CSV editor,同时提供 cleaning、批量编辑(bulk editing)和 enrichment 功能。 而且单个 collection 可以扩展到数百万条数据。

打开 Datablist,创建一个 collection,然后把包含抓取数据的 CSV 文件导入进去。

创建新 collection 时,点击侧边栏的 + 按钮,然后点 “Import CSV/Excel” 上传文件。你也可以在 getting started 页面点击快捷入口,直接跳到文件导入步骤。

Create a collection
Create a collection

自动识别字段类型

Datablist 的导入助手会自动识别 email addresses、ISO 8601 格式的 Datetimes、Booleans、Numbers、URLs 等,前提是它们的格式足够规范。

Type auto detection
Type auto detection

如果你的数据需要更复杂的判断(比如不同的 datetime 格式、URL 或 email 的拼写错误),建议先按 Text 字段导入。下一节我会演示如何把 Text 字段再转换为 Datetime、Boolean 或 Number。

Select data type
Select data type

文本转换为 Datetime、Number、Boolean

Marie Kondo 说过:“真正的生活,是从你把家整理好之后开始的。”抓取数据也一样:真正的 Sales,是从你把数据整理好之后才开始的 😅

当你需要按 date(创建时间、融资时间等)、按 number(价格、员工数),或按 boolean 做筛选/分组时,把它们变成原生类型而不是一段 text,会轻松很多。

在 “Clean” 菜单里打开 “Text to Datetime, Number, Checkbox” 工具。

Convert Text to data types
Convert Text to data types

将任意文本转换为 Datetime 格式

Datetime 有一个国际通用标准格式:ISO 8601,结构固定。如果你的数据本身就是 ISO 8601,导入时 Datablist 会自动创建 Datetime 字段来存储。

但如果你的 Date/Datetime 不是 ISO 8601,就需要你指定当前使用的格式,这样 Datablist 才能把它转换成结构化的 Datetime。

选择要转换的字段,然后选 “Convert to Datetime”。

Convert Text to Datetime
Convert Text to Datetime

你可以从常见格式列表中选择(Google Sheets 和 Excel 常用格式),或者选 “Custom format” 自定义 datetime 格式。

Custom Datetime format
Custom Datetime format
Datetime conversion preview
Datetime conversion preview

👉 查看文档,了解更多自定义 datetime 格式。

从文本创建 Checkbox(Boolean)

导入时,Datablist 会把包含 “Yes, No”、“TRUE, FALSE” 等值的列自动识别为 Checkbox 字段。更复杂的情况,就用这个转换器处理。

你可以定义哪些值(用逗号分隔)会被转换为 checked。其他值则保持 unchecked

Checkbox conversion
Checkbox conversion
Checkbox conversion preview
Checkbox conversion preview

从文本中提取数值(Number)

使用 “Text to number” 转换器可以:

  • 按自定义小数点/千分位分隔符来标准化数字
  • 从包含字母的文本里抽取数字
Number conversion
Number conversion
Number conversion preview
Number conversion preview

👉 查看文档,了解更多 number conversion。

清洗抓取数据

HTML 转纯文本(移除 HTML 标签)

抓取工具经常会把 HTML 代码一起抓下来,所以你的文本字段里可能混着各种 HTML tags。

HTML 里有链接、图片、带 bullet points 的列表,也包含段落和多行结构。

我们的目标是:尽量保留 HTML 的“排版信息”,但把不可读的代码转换成可读的纯文本。

Datablist 的 HTML to Text 转换器会保留换行,并把 bullet points 转成以 - 开头的列表。

要把带 HTML tags 的文本转换成纯文本,在 “Edit” 菜单里打开 Bulk Edit

Bulk Edit Tool
Bulk Edit Tool

选择包含 HTML tags 的字段,然后选 “Convert HTML into plain text”。

Bukl Edit Convert HTML
Bukl Edit Convert HTML
HTML to Text conversion
HTML to Text conversion
HTML to Text Results
HTML to Text Results

去掉多余空格

抓取数据的另一个高频问题是多余空格:可能来自换行、Tab,以及 HTML 里各种“空白字符”。

Datablist 内置了专门的清洗工具来处理多余空格:

  • 移除词与词之间的多余空格
  • 删除空行
  • 去掉每行开头和结尾的空格

要移除多余空格,在 “Edit” 菜单打开 “Bulk Edit”,选中字段,然后选择 “Remove extra spaces”。

Remove Extra Space Configuration
Remove Extra Space Configuration
Remove Extra Space
Remove Extra Space
Remove Extra Space Results
Remove Extra Space Results

统一文本大小写

调整文本大小写很简单:在 “Edit” 菜单里打开 “Bulk Edit”。

选择要处理的字段,然后用 “Change text case”。

Change Text Case
Change Text Case

支持 4 种模式:

  • Uppercase - 全部转成大写。例如:john => JOHN
  • Lowercase - 全部转成小写。例如:API => api
  • Capitalize - 每个单词首字母大写。例如:john is a good man => John Is A Good Man
  • Capitalize only the first word - 只把第一个单词首字母大写。例如:john is a good man => John is a good man

移除文本中的符号

从 HTML 页面抓下来的文本,或来自用户输入的内容(比如 LinkedIn profile title),经常会包含一些符号:表情、特殊字符等。这些字符会影响你的数据处理流程。比如:名字末尾多了一个表情,可能就会让它无法被去重算法识别。

Datablist 内置了处理器,可以移除数据中所有非文本符号。

在 “Edit” 菜单点 “Bulk Edit”,选择一个文本字段,然后选 “Remove symbols”。

Remove symbols
Remove symbols

预览没问题后,运行转换来批量处理数据。

Remove symbols results
Remove symbols results

使用 Find and Replace 做数据标准化

想在你的 prospect lists 上做分群/细分,数据标准化是必经之路。

  • 标准化 job titles
  • 标准化国家、城市
  • 标准化 URL
  • 等等

你的目标通常是:把“自由输入”的字段收敛成少量可控的选项;或者把文本转换成更基础、更统一的版本(比如把带路径的 URL 变成只有 domain 的 URL)。

Datablist 提供了强大的 Find and Replace 工具,既支持普通文本,也支持正则表达式(regular expressions)。

正则表达式很难,但也非常强。

下面是几个用 RegEx 清洗数据的例子。

从 URL 中移除 query 参数

抓到的 URL 经常带着用于 tracking/marketing 的 query 参数。把它们移除后,你会得到更干净的 URL,也更利于用 URL 来做去重(用 URL 来查找重复数据)。

要移除 URL 的 query 参数,勾选 “Match using regular expression”,然后用下面的正则表达式,并把 replacement 留空:

\?.*$
Regular Expression to remove query parameters
Regular Expression to remove query parameters

然后应用到你的 URL 字段上。

Preview without query params
Preview without query params

从 Email Addresses 提取域名

Find and Replace + 正则的另一个典型用法:从 email 地址里提取网站域名。

建议先复制一列 email 字段,保留原始数据。然后使用下面的正则表达式,并把 replacement 留空:

^(\w)*@
Regular Expression to get domain from email address
Regular Expression to get domain from email address
Domains from email addresses preview
Domains from email addresses preview

👉 想深入了解,请查看 Find and Replace 文档。

将 Full Name 拆分为 First Name 和 Last Name

抓取 lead lists 时,你经常只拿到一个 “Full Name”,但你需要把它拆成 “First Name” 和 “Last Name”。能准确解析姓名结构,是后续所有个性化动作的关键一步。

把 first name 和 last name 分开后,你可以在 cold emailing 里更自然地称呼对方,也更方便你判断性别、提取学术头衔等信息。

姓名拆分并不总是简单,但 Datablist 提供了一个易用工具:用空格作为分隔符,把 “Name” 拆成两个值。

开始前,在 “Edit” 菜单打开 “Split Property”。

Split Property tool
Split Property tool

然后选择要解析的姓名字段。分隔符选择 Space,并把最大分段数设为 2。

Configure Split Property
Configure Split Property

运行 preview。Datablist 会对前 10 条数据做解析并生成预览。如果结果满意,点击 “Split Property” 把算法应用到当前所有数据。

Run preview
Run preview

拆分完成后,把新生成的两个字段重命名为 “First Name” 和 “Last Name”。

First Name and Last Name results
First Name and Last Name results

这个示例主要针对西方姓名习惯(通常由 first name + last name 组成)。如果遇到非西方姓名、多个名/多个姓、或带称谓/后缀的情况,解析会更复杂一些。

数据去重

Datablist 有一个很强的 deduplication 算法,可以用来去重记录。它可以基于一个或多个字段寻找相似项,并提供自动合并策略,在不丢数据的前提下完成 merge。

要运行去重算法,在 “Clean” 菜单点击 “Duplicate Finder”。

Run Duplicate Finder
Run Duplicate Finder

选择用于匹配的字段。

在结果页,建议先运行一次 “Auto Merge”,并只勾选 “Merge non-conflicting duplicates”。这会先合并那些“无冲突、容易合并”的重复项,同时列出存在冲突的字段。

这个 dedupe algorithm 还提供两种处理冲突数据的方式:你可以选择用分隔符 “Combine conflicting properties”,把冲突值拼接保留;或者丢弃冲突值,只保留一个 master item。

Automatic Merging
Automatic Merging

👉 查看指南:如何合并 CSV 文件中的重复数据。

验证 Email Addresses

抓取数据可能过期、可能有拼写错误,也可能根本无效。 尤其是 scraping 得到的 email 地址,这个问题非常常见。

当数据来自用户生成内容时,你还会遇到假邮箱,或者来自一次性(disposable)邮箱服务商的地址。

Datablist 内置 email validation 工具,可以让你一次验证成千上万条 email。

Click on "Enrich"
Click on "Enrich"

Email validation 服务包括:

  • Email syntax analysis - 第一层检查是确认 email 符合 IEFT 标准,并做完整语法分析。比如缺少 @、domain 不合法等都会被标记。
  • Disposable providers check - 第二层检查用于识别临时邮箱。服务会检测是否属于 Disposable Email Address (DEA) 供应商域名,例如 Mailinator、Temp-Mail、YopMail 等。
  • Domain MX records check - 有效的 email 地址,其域名必须配置 MX records。MX records 指定该域接受邮件的服务器。缺失 MX records 通常意味着该 email 无效。 对每个 email domain,服务会检查 DNS 记录并寻找 MX 记录。如果域名不存在,email 会被标记为无效;如果域名存在但没有有效 MX 记录,也会被标记为无效。
  • Business and Personal Email addresses Segmentation - 当你需要对来自 lead magnet 的 prospects 做分层,或对用户进行细分时,往往要区分 business email 和 personal email。Email validation 会输出这类信息,用于 enrichment。
Email verification results
Email verification results

👉 查看指南:如何清洗 email list。

从抓取文本中提取人名或公司名

当你从网站或其他来源抓取大段文本时,很多时候你会想直接提取其中的人名或公司名。这类信息可以用于多种场景,比如 lead generation、竞品分析等。但从非结构化文本里提取名字并不容易:名字形式非常多样,且常常嵌在更长的句子或段落里。

姓名/机构名提取的难点之一,是不同文化与语言存在大量命名习惯差异。比如有些文化是姓在前名在后,有些相反;有些人有多个名或多个姓;此外,名字还可能拼写错误、被缩写、或以不标准的形式出现,这都会让简单的规则匹配失效。

一个常见方法是 Named Entity Recognition(NER),它是一种 NLP 技术,用来识别并分类文本中的命名实体。NER 模型可以被训练来识别人名、组织、地点等实体,也能针对不同命名习惯做定制。

Datablist 内置了强大的 “Named Entity Recognition”(NER)模型,你可以直接对文本运行。它支持阿拉伯语、德语、英语、西班牙语、法语、意大利语、拉脱维亚语、荷兰语、葡萄牙语以及中文。

在 “Enrichments” 菜单里选择 “Entity name extraction”。

Entity Name Extraction
Entity Name Extraction

然后在 input 里选择你要提取名字的文本字段。

Configure Entity Name Extractor
Configure Entity Name Extractor

在 outputs 部分,为每一种你想提取的名称类型点击 “Create a new property”。

Datablist Entity Name extractor 会提取:

  • Organization Name:例如公司名称
  • Person Name:完整姓名或 First Name/Last Name
  • Location:城市、国家和地点
Add properties to store names
Add properties to store names

然后运行 enrichment。

需要帮你处理数据清洗吗?

我一直在收集真实反馈和新的数据清洗难题,方便持续改进。欢迎你联系我分享你的 use case。