想要发展业务?SuperPages 是获取有价值的潜在客户信息的好地方。SuperPages 是最大的在线目录之一,列出了美国各地的企业。这里有数百万家按行业、位置等分类的企业,是查找潜在客户或客户详细信息的好地方。
在本指南中,我们将向您展示如何抓取 SuperPages 以获取业务信息。使用 Python 和一些简单的库,您可以获取企业名称、电话号码、地址等。这将为您提供一份潜在客户列表,以扩大您的营销或建立合作伙伴关系。
一旦我们设置了核心抓取工具,我们还将研究使用以下方法优化结果 爬虫库 Smart Proxy 以确保处理更大数据集时的数据准确性和效率。
以下是我们将介绍的帮助您入门的所有内容:
目录
- 为什么要从 SuperPages 抓取线索?
- 从 SuperPages 中提取的关键数据
- 设置 Python 环境
- 抓取 SuperPages 列表
- 检查 HTML 中的选择器
- 编写列表抓取工具
- 处理分页
- 将数据保存在 JSON 文件中
- 完整的代码
- 抓取 SuperPages 业务详情
- 检查 HTML 中的选择器
- 编写业务详细信息抓取工具
- 将数据保存在 JSON 文件中
- 完整的代码
- 使用 Crawlbase 优化 SuperPages Scraper Smart 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.解析器”) 列表 = []
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 获取所有列表(总页数): 所有列表 = [] 页 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.解析器”) 列表 = []
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 获取所有列表(总页数): 所有列表 = [] 页 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() 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() 日期、日数 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() 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() 日期、日数 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', ]
所有业务详情 = [] 网址 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” } } ]
|
使用 Crawlbase 优化 SuperPages Scraper Smart Proxy
为了使我们的 SuperPages 爬虫更加强大和快速,我们可以使用 爬虫库 Smart Proxy. Smart Proxy 具有 IP 轮换和反机器人保护,这对于在长时间数据收集期间不达到速率限制或被阻止至关重要。
添加 Crawlbase Smart Proxy 我们的设置很简单。 立即注册 在 Crawlbase 上获取 API 令牌。我们将使用 Smart Proxy URL 以及我们的令牌使请求看起来好像来自不同位置。这将帮助我们避免检测并确保不间断地抓取数据。
以下是我们如何修改代码以使用 Crawlbase Smart 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() 行 in 汤.选择('.biz-hours tr') }
联系信息 = { dt.文本.strip().replace(':', ''): dd.文本.strip() 日期、日数 in 拉链(汤.选择(‘.details-联系方式’), 汤.选择(‘.details-联系方式’)) }
详细信息 = { “名称”: 姓名, ‘小时’:小时, ‘联系信息’:联系方式 } 回报 详情
|
通过 Crawlbase 路由我们的请求,我们添加了必要的 IP 轮换和反机器人措施,从而提高了抓取工具的可靠性和可扩展性。此设置非常适合从 SuperPages 收集大量数据,不会出现中断或阻塞,从而保持抓取工具的高效性和有效性。
总结
在这篇博客中,我们介绍了如何抓取 SuperPages 以获取潜在客户。我们学习了如何提取姓名、地址和电话号码等业务数据。我们使用 Requests 和 BeautifulSoup 创建了一个简单的抓取工具来获取这些数据。
我们还介绍了如何处理分页以获取网站上的所有列表。通过使用 爬虫库 Smart Proxy,我们使我们的抓取工具更加可靠和高效,这样我们在数据收集过程中就不会受到阻碍。
按照本指南中概述的步骤,您可以构建抓取工具并开始提取重要数据。如果您想进行更多网页抓取,请查看我们关于抓取其他主要网站的指南。
📜 轻松抓取 Costco 产品数据
📜 如何抓取 Houzz 数据
📜 如何抓取 Tokopedia
📜 使用 Python 抓取 OpenSea 数据
📜 如何通过简单的步骤抓取 Gumtree 数据
如果您有任何问题或反馈,我们的 支持团队 随时为您提供帮助。祝您抓取愉快!
常见问题
问:如何避免在抓取 SuperPages 时被阻止?
为了避免被阻止,请在请求之间添加延迟,限制请求频率并轮换 IP 地址。类似 爬虫库 Smart Proxy 可以通过轮换 IP 地址来简化此过程,以便您的抓取工具顺利运行。避免过于频繁地发出请求,并遵循良好的抓取做法。
问:为什么我尝试抓取 SuperPages 时没有得到任何结果?
如果您的抓取工具没有返回结果,请检查您的 HTML 选择器是否与 SuperPages 的结构相匹配。有时,网站 HTML 结构的细微变化需要您更新选择器。此外,如果您尝试获取多页结果,请确保正确处理分页。
如果您需要以其他格式(如 CSV 或 Excel)抓取数据,则可以轻松修改脚本。对于 CSV,请使用 Python 的 csv
模块以行形式保存数据。对于 Excel, pandas
图书馆有一个 .to_excel()
功能运行良好。这种灵活性可以帮助您以适合您需求的方式分析或共享数据。