想要发展业务?SuperPages 是获取有价值的潜在客户信息的好地方。SuperPages 是最大的在线目录之一,列出了美国各地的企业。这里有数百万家按行业、位置等分类的企业,是查找潜在客户或客户详细信息的好地方。
在本指南中,我们将向您展示如何抓取 SuperPages 以获取业务信息。使用 Python 和一些简单的库,您可以获取企业名称、电话号码、地址等。这将为您提供一份潜在客户列表,以扩大您的营销或建立合作伙伴关系。
一旦我们设置了核心抓取工具,我们还将研究使用以下方法优化结果 Crawlbase Smart AI Proxy 以确保处理更大数据集时的数据准确性和效率。
以下是我们将介绍的帮助您入门的所有内容:
目录
- 为什么要从 SuperPages 抓取线索?
- 从 SuperPages 中提取的关键数据
- 设置 Python 环境
- 抓取 SuperPages 列表
- 检查 HTML 中的选择器
- 编写列表抓取工具
- 处理分页
- 将数据保存在 JSON 文件中
- 完整的代码
- 抓取 SuperPages 业务详情
- 检查 HTML 中的选择器
- 编写业务详细信息抓取工具
- 将数据保存在 JSON 文件中
- 完整的代码
- 使用以下工具优化 SuperPages Scraper Crawlbase Smart AI Proxy
- 总结
- 常见问题
为什么要从 SuperPages 抓取线索?
SuperPages 是美国顶级商业目录,拥有数百万个跨行业列表。无论您从事销售、营销还是研究,SuperPages 都拥有您创建有针对性的潜在客户列表所需的信息。从小型本地企业到全国性公司,SuperPages 拥有数百万个条目,每个条目都包含企业名称、地址、电话号码和业务类别。

通过抓取 SuperPages,您可以将所有这些信息集中到一个地方,节省手动搜索的时间,并专注于接触潜在客户。您无需逐页浏览,而是拥有一个可供分析和跟进的结构化数据集。
让我们深入了解一下可以从 SuperPages 中提取什么信息。
在抓取 SuperPages 时,您需要知道要提取哪些数据来生成潜在客户。SuperPages 为每个企业提供了多条数据,通过定位特定字段,您可以创建一个干净的数据集,用于推广和营销目的。
以下是一些主要数据字段:
- 生意名称:每个企业的主要标识符,以便您可以对潜在客户进行分组。
- 类别:SuperPages 按行业对企业进行分类,例如“餐馆”或“法律服务”。这将帮助您按行业细分潜在客户。
- 地址和地点:完整的地址详情,包括城市、州和邮政编码,以便您可以针对本地营销活动。
- 电话号码:对于直接联系很重要,特别是当您正在建立基于电话的外展活动时。
- 网址:许多列表都有网站链接,因此您可以通过另一种方式参与并获取有关每个企业的更多信息。
- 评分和评论:如果可用,这些数据可以让您深入了解客户情绪和声誉,以便您可以根据企业的质量和客户反馈来定位企业。
清楚知道要提取的内容后,我们就可以准备在下一节中设置 Python 环境了。
设置 Python 环境
在开始抓取 SuperPages 数据之前,我们需要设置正确的 Python 环境。这包括安装 Python、必要的库和集成开发环境 (IDE) 以编写和运行我们的代码。
安装 Python 和所需的库
首先,确保你的电脑上安装了 Python。你可以从以下网址下载最新版本: 蟒蛇网。安装后,您可以通过在终端或命令提示符中运行以下命令来测试 Python 是否正常运行:
接下来,您需要安装所需的库。在本教程中,我们将使用 Requests 发出 HTTP 请求,使用 BeautifulSoup 解析 HTML。您可以通过运行以下命令来安装这些库:
这些库将帮助您与 SuperPages 进行交互并从 HTML 中抓取数据。
选择 IDE
要编写和运行 Python 脚本,您需要一个 IDE。以下是一些选项:
选择您喜欢的 IDE。设置好环境后,您就可以开始编写代码来抓取 SuperPages 列表了。
抓取 SuperPages 列表
在本节中,我们将介绍如何抓取 SuperPages 列表。其中包括检查 HTML 以查找选择器、编写抓取程序、处理分页以从多个页面获取数据,以及将数据保存在 JSON 文件中以便于访问。
检查 HTML 中的选择器
在开始编写抓取工具之前,我们需要检查 SuperPages 列表页面,找到包含所需数据的 HTML 结构和 CSS 选择器。操作方法如下:
- 打开列表页面:转到 SuperPages 搜索结果页面(例如,在您感兴趣的位置搜索“家庭服务”)。
- 检查页面:右键单击页面并选择“检查”或按
Ctrl + Shift + I 打开开发人员工具。

- 找到相关元素:
- 生意名称:企业名称是
<a> 带有类的标签 .business-name,并且在此范围内 <a>,名字本身是 <span> 标签。 - 地址:该地址位于
<span> 带有类的标签 .street-address. - 电话号码:电话号码是
<a> 用类别标记 .phone 与 .primary. - 网站链接:如果可用,则企业网站链接位于
<a> 带有类的标签 .weblink-button. - 详情页面链接:业务详情页面的链接位于
<a> 带有类的标签 .business-name.
查找您想要提取的任何其他数据,例如评级或营业时间。现在,您已准备好在下一节中编写抓取工具。
编写列表抓取工具
现在我们有了选择器,我们可以编写抓取工具了。我们将使用 requests 获取页面并 BeautifulSoup 解析 HTML 并提取数据。以下是抓取列表的基本代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 进口 要求 , bs4 进口 美丽汤 进口 JSON
DEF 获取列表(页码): 网址= f“https://www.superpages.com/search?search_terms=Home%20Services&geo_location_terms=Los%20Angeles%2C%20CA&page={页码}" 标头= { “用户代理”: “Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0” } 响应 = requests.get(url, headers=headers) if 响应.status_code == 200: 汤 = BeautifulSoup(response.content, “html.解析器”) 列表 = []
HPMC胶囊 business in 汤.选择(“div.搜索结果>div.结果”): 名称 = business.select_one(“a.business-name 跨度”).text.strip() if 业务.select_one(“a.business-name 跨度”) 其他 "" 地址 = business.select_one(“span.街道地址”).text.strip() if 业务.select_one(“span.街道地址”) 其他 "" 电话=business.select_one(“a.phone.primary”).text.strip() if 业务.select_one(“a.phone.primary”) 其他 "" 网站 = business.select_one(“a.weblink 按钮”)[“参考”] if 业务.select_one(“a.weblink 按钮”) 其他 "" 详细信息页面链接 = 'https://www.superpages.com' + 业务.select_one(“a.公司名称”)[“参考”] if 业务.select_one(“a.公司名称”) 其他 ""
列表.附加({ “名称”: 姓名, “地址”: 地址, “电话”: 电话, “网站”: 网站, “详细页面链接”:详细信息页面链接 })
回报 上市 其他: 打印(“无法检索页面。”) 回报 []
|
此代码从给定的结果页面获取数据。它提取每个企业的名称、地址、电话号码和网站,并将它们存储在字典列表中。
处理分页
为了获取更多数据,我们需要处理分页,以便抓取工具可以遍历多个页面。SuperPages 会更改 URL 中的页码,因此通过循环遍历页码可以轻松添加分页。我们可以创建一个如下所示的函数来抓取多个页面:
1 2 3 4 5 6 7 8
| DEF 获取所有列表(总页数): 所有列表 = [] HPMC胶囊 页 in 范围(1, 总页数 + 1): 打印(f"抓取页面 {页}...“) 列表 = 获取列表(页面) all_listings.extend(列表) 回报 all_listings
|
现在, fetch_all_listings() 将通过调用以下方法从指定数量的页面收集数据 fetch_listings() 反复。
将数据保存在 JSON 文件中
收集完所有数据后,重要的是将其保存为 JSON 文件以便于访问。以下是如何以 JSON 格式保存数据:
1 2 3 4 5
| DEF 保存到json(数据,文件名=“超级页面列表.json”): - open(文件名, “w”) as 文件: json.dump(数据,文件,缩进=4) 打印(f”数据保存至 {文档名称}")
|
此代码将数据保存在名为 superpages_listings.json。每个条目都会有企业名称、地址、电话号码和网站。
完整代码示例
以下是包含所有步骤的完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| 进口 要求 , bs4 进口 美丽汤 进口 JSON
DEF 获取列表(页码): 网址= f“https://www.superpages.com/search?search_terms=Home%20Services&geo_location_terms=Los%20Angeles%2C%20CA&page={页码}" 标头= { “用户代理”: “Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0” } 响应 = requests.get(url, headers=headers) if 响应.status_code == 200: 汤 = BeautifulSoup(response.content, “html.解析器”) 列表 = []
HPMC胶囊 business in 汤.选择(“div.搜索结果>div.结果”): 名称 = business.select_one(“a.business-name 跨度”).text.strip() if 业务.select_one(“a.business-name 跨度”) 其他 "" 地址 = business.select_one(“span.街道地址”).text.strip() if 业务.select_one(“span.街道地址”) 其他 "" 电话=business.select_one(“a.phone.primary”).text.strip() if 业务.select_one(“a.phone.primary”) 其他 "" 网站 = business.select_one(“a.weblink 按钮”)[“参考”] if 业务.select_one(“a.weblink 按钮”) 其他 "" 详细信息页面链接 = 'https://www.superpages.com' + 业务.select_one(“a.公司名称”)[“参考”] if 业务.select_one(“a.公司名称”) 其他 ""
列表.附加({ “名称”: 姓名, “地址”: 地址, “电话”: 电话, “网站”: 网站, “详细页面链接”:详细信息页面链接 })
回报 上市 其他: 打印(“无法检索页面。”) 回报 []
DEF 获取所有列表(总页数): 所有列表 = [] HPMC胶囊 页 in 范围(1, 总页数 + 1): 打印(f"抓取页面 {页}...“) 列表 = 获取列表(页面) all_listings.extend(列表) 回报 all_listings
DEF 保存到json(数据,文件名=“超级页面列表.json”): - open(文件名, “w”) as 文件: json.dump(数据,文件,缩进=4) 打印(f”数据保存至 {文档名称}")
DEF 主(): 总页数= 5 all_listings_data = 获取所有列表(总页数) 保存到json(所有列表数据)
if __名字__ == “__主要的__”: 主()
|
示例输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| { “名称”: “长青清洁系统”, “地址”: “3325 Wilshire Blvd Ste 622,洛杉矶,加利福尼亚州 90010”, “电话”: “213-375-1597立即致电”, “网站”: “https://www.evergreencleaningsystems.com”, “详细页面链接”: “https://www.superpages.com/los-angeles-ca/bpp/evergreen-cleaning-systems-540709574?lid=1002188497939” }, { “名称”: “快乐女仆”, “地址”: “14741 Kittridge Street,范奈斯,加利福尼亚州 91405”, “电话”: “818-465-8982立即致电”, “网站”: “http://www.merrymaids.com”, “详细页面链接”: “https://www.superpages.com/van-nuys-ca/bpp/merry-maids-542022905?lid=1002108319143” }, { “名称”: “任何时间任何时间的清洁服务”, “地址”: “27612 Cherry Creek Dr,圣克拉丽塔,CA 91354”, “电话”: “661-297-2702立即致电”, “网站”: "", “详细页面链接”: “https://www.superpages.com/santa-clarita-ca/bpp/any-day-anytime-cleaning-service-513720439?lid=1002021283815” }, { “名称”: “超声波盲人服务”, “地址”: “2049 Pacific Coast Hwy,Ste 217,洛米塔,CA 90717”, “电话”: “424-257-6603立即致电”, “网站”: “http://www.ultrasonicblindservices.com”, “详细页面链接”: “https://www.superpages.com/lomita-ca/bpp/ultrasonic-blind-services-514581803?lid=1002166431055” }, .... 更多的 ]
|
抓取 SuperPages 业务详情
从列表中获取基本信息后,就该访问每个列表的专用页面,深入了解各个业务的详细信息。此步骤将帮助您收集更深入的信息,例如营业时间、客户评论和其他联系方式。
检查 HTML 中的选择器
首先,我们将检查 SuperPages 业务详情页面的 HTML 结构,以确定每条信息的位置。方法如下:
- 打开企业详情页面:点击搜索结果中的任意企业名称,即可打开其详细信息页面。
- 检查页面:右键单击并选择“检查”或按
Ctrl + Shift + I 打开开发人员工具。

- 找到关键元素:
- 生意名称:发现于
<h1> 带有类的标签 .business-name. - 营业时间:按行显示
.biz-hours 表格中每天的小时数以 <tr> - th.day-label 与 td.day-hours. - 联系方式:位于键值对内
.details-contact 部分,每个键 <dt> 标签和相应的每个值 <dd> 标签。
确定这些选择器后,您就可以进入下一步了。
编写业务详细信息抓取工具
现在,让我们在 Python 脚本中使用这些选择器从每个业务页面抓取具体的详细信息。首先,我们将向每个业务详细信息页面 URL 发出请求。然后,我们将使用 BeautifulSoup 解析并提取具体信息。
以下是从每个页面抓取业务详细信息的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 进口 要求 , bs4 进口 美丽汤 进口 JSON
DEF 获取业务详情(网址): 标头= { “用户代理”: “Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0” } 响应 = requests.get(url, headers=headers) 汤 = BeautifulSoup(response.content, 'html.parser')
名称 = 汤.find('h1', 类_='企业名称').text.strip() if 汤.找到('h1', 类_='企业名称') 其他 ""
小时 = { 行.查找(‘日’, 类_='日标签').text.strip(): row.find(‘TD’, 类_=‘日间’).text.strip() HPMC胶囊 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() HPMC胶囊 日期、日数 in 拉链(汤.选择(‘.details-联系方式’), 汤.选择(‘.details-联系方式’)) }
详细信息 = { “名称”: 姓名, ‘小时’:小时, ‘联系信息’:联系方式 } 回报 详情
|
将数据保存在 JSON 文件中
为了方便以后处理抓取的数据,我们将业务详细信息保存在 JSON 文件中。这样您就可以以有组织的方式存储和访问信息。
1 2 3
| DEF 保存到json(数据,文件名='业务详情.json'): - open(文件名, 'w') as 文件: json.dump(数据,文件,缩进=4)
|
完整代码示例
这是完整的代码,包括从获取业务详细信息到将其保存在 JSON 文件中的所有内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| 进口 要求 , bs4 进口 美丽汤 进口 JSON
DEF 获取业务详情(网址): 标头= { “用户代理”: “Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0” } 响应 = requests.get(url, headers=headers) 汤 = BeautifulSoup(response.content, 'html.parser')
名称 = 汤.find('h1', 类_='企业名称').text.strip() if 汤.找到('h1', 类_='企业名称') 其他 ""
小时 = { 行.查找(‘日’, 类_='日标签').text.strip(): row.find(‘TD’, 类_=‘日间’).text.strip() HPMC胶囊 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() HPMC胶囊 日期、日数 in 拉链(汤.选择(‘.details-联系方式’), 汤.选择(‘.details-联系方式’)) }
详细信息 = { “名称”: 姓名, ‘小时’:小时, ‘联系信息’:联系方式 } 回报 详情
DEF 保存到json(数据,文件名='业务详情.json'): - open(文件名, 'w') as 文件: json.dump(数据,文件,缩进=4)
DEF 主(): 网址 = [ 'https://www.superpages.com/los-angeles-ca/bpp/evergreen-cleaning-systems-540709574?lid=1002188497939', 'https://www.superpages.com/van-nuys-ca/bpp/merry-maids-542022905?lid=1002108319143', ]
所有业务详情 = [] HPMC胶囊 网址 in 网址: 业务详情 = 获取业务详情 (网址) all_business_details.append(业务详情)
保存到json(所有业务详情)
if __名字__ == '__主要__': 主()
|
示例输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| [ { “名称”: “长青清洁系统”, “小时”: { “周一至周五”: “上午 7:00 - 晚上 8:00”, “星期六”: “上午 7:00 - 晚上 6:00”, “太阳”: “关闭” }, “联系方式”: { “电话”: “总机 - 213-375-1597”, “地址”: “3325 Wilshire Blvd Ste 622 洛杉矶,加利福尼亚州 90010”, “电子邮件”: “联系我们”, “关联”: “https://www.evergreencleaningsystems.com” } }, { “名称”: “快乐女仆”, “小时”: { “周一至周五”: “上午 7:30 - 晚上 5:30”, “星期六”: “上午 7:00 - 晚上 3:00” }, “联系方式”: { “电话”: “总机 - 818-465-8982”, “地址”: “14741 Kittridge Street Van Nuys,加利福尼亚州 91405”, “电子邮件”: “联系我们”, “关联”: “http://www.merrymaids.com” } } ]
|
使用以下工具优化 SuperPages Scraper Crawlbase Smart AI Proxy
为了使我们的 SuperPages 爬虫更加强大和快速,我们可以使用 Crawlbase Smart AI Proxy. Smart AI Proxy 具有 IP 轮换和反机器人保护,这对于在长时间数据收集期间不达到速率限制或被阻止至关重要。
添加 Crawlbase Smart AI Proxy 我们的设置很简单。 立即免费注册 on Crawlbase 并获取 API 令牌。我们将使用 Smart AI Proxy URL 以及我们的令牌使请求看起来好像来自不同位置。这将帮助我们避免检测并确保不间断地抓取数据。
以下是我们如何修改代码以使用 Crawlbase Smart AI Proxy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 进口 要求 , bs4 进口 美丽汤
代理网址 = 'http://_USER_TOKEN_:@smartproxy.crawlbase.com:8012'
DEF 获取业务详情(网址): 标头= { “用户代理”: “Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:131.0)Gecko/20100101 Firefox/131.0” } 代理={“http”:代理网址, “https”: 代理网址} 响应 = 请求.get(url = url,headers = headers,proxies = proxies,verify =假) 汤 = BeautifulSoup(response.content, 'html.parser')
名称 = 汤.find('h1', 类_='企业名称').text.strip() if 汤.找到('h1', 类_='企业名称') 其他 ""
小时 = { 行.查找(‘日’, 类_='日标签').text.strip(): row.find(‘TD’, 类_=‘日间’).text.strip() HPMC胶囊 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() HPMC胶囊 日期、日数 in 拉链(汤.选择(‘.details-联系方式’), 汤.选择(‘.details-联系方式’)) }
详细信息 = { “名称”: 姓名, ‘小时’:小时, ‘联系信息’:联系方式 } 回报 详情
|
通过路由我们的请求 Crawlbase,我们添加了必要的 IP 轮换和反机器人措施,以提高抓取工具的可靠性和可扩展性。此设置非常适合从 SuperPages 收集大量数据,不会出现中断或阻塞,从而保持抓取工具的高效性。
总结
在这篇博客中,我们介绍了如何抓取 SuperPages 以获取潜在客户。我们学习了如何提取姓名、地址和电话号码等业务数据。我们使用 Requests 和 BeautifulSoup 创建了一个简单的抓取工具来获取这些数据。
我们还介绍了如何处理分页以获取网站上的所有列表。通过使用 Crawlbase Smart AI Proxy,我们使我们的抓取工具更加可靠和高效,这样我们在数据收集过程中就不会受到阻碍。
按照本指南中概述的步骤,您可以构建抓取工具并开始提取重要数据。如果您想进行更多网页抓取,请查看我们关于抓取其他主要网站的指南。
📜 轻松抓取 Costco 产品数据
📜 如何抓取 Houzz 数据
📜 如何抓取 Tokopedia
📜 使用 Python 抓取 OpenSea 数据
📜 如何通过简单的步骤抓取 Gumtree 数据
如果您有任何问题或反馈,我们的 支持团队 随时为您提供帮助。祝您抓取愉快!
常见问题
问:如何避免在抓取 SuperPages 时被阻止?
为了避免被阻止,请在请求之间添加延迟,限制请求频率并轮换 IP 地址。类似 Crawlbase Smart AI Proxy 可以通过轮换 IP 地址来简化此过程,以便您的抓取工具顺利运行。避免过于频繁地发出请求,并遵循良好的抓取做法。
问:为什么我尝试抓取 SuperPages 时没有得到任何结果?
如果您的抓取工具没有返回结果,请检查您的 HTML 选择器是否与 SuperPages 的结构相匹配。有时,网站 HTML 结构的细微变化需要您更新选择器。此外,如果您尝试获取多页结果,请确保正确处理分页。
如果您需要以其他格式(如 CSV 或 Excel)抓取数据,则可以轻松修改脚本。对于 CSV,请使用 Python 的 csv 模块以行形式保存数据。对于 Excel, pandas 图书馆有一个 .to_excel() 功能运行良好。这种灵活性可以帮助您以适合您需求的方式分析或共享数据。