LinkedIn 数据抓取可以为招聘、销售和市场调研提供宝贵的数据。本指南将向您展示如何使用 Python 和 LinkedIn 提取个人资料、公司页面和动态。 Crawlbase“ Crawling API.

目录

为什么要爬取 LinkedIn?

LinkedIn 数据提取具有强大的优势:

一张图列出了为什么抓取 LinkedIn 上的重要职位
  1. 人才招聘实现候选人搜寻自动化,更快找到合格的专业人才
  2. 销售与潜在客户开发:销售团队可以抓取 LinkedIn 个人资料来收集线索,监控它们以供电话推销员使用,或者开发 有针对性的推广策略.
  3. 市场调查:监测竞争对手、行业趋势和市场基准
  4. 就业市场分析追踪招聘模式、薪资趋势和热门技能
  5. 学术研究收集有关职业人脉和职业发展轨迹的数据集。

我们可以从LinkedIn抓取哪些数据?

领英个人资料:

  • 个人信息:姓名、职务、现任和前任职位、教育背景、技能、认可和推荐。
  • 详细联系方式:电子邮件、电话号码(如果公开)和社交媒体资料。
  • 订婚戒指:用户分享或喜欢的帖子、文章和其他内容。

公司页面:

  • 更多详情:名称、行业、规模、位置、网站和公司描述。
  • 招聘职位:当前职位空缺、职位描述、要求和申请链接。
  • 员工信息:公司内部员工列表、他们的职责以及联系。
  • 更新和新闻:公司在其页面上分享的帖子、文章和更新。

LinkedIn动态:

  • 动态消息:您感兴趣的用户和公司的最新更新、帖子和文章。
  • 参与度指标:点赞、评论、分享以及帖子的整体参与度。
  • 内容分析:共享的内容类型、热门话题以及用户参与模式。

数据抓取挑战与解决方案

抓取 LinkedIn 数据可以提供有价值的数据,但也伴随着挑战。

这张图显示了抓取 LinkedIn 数据的潜在挑战,如下所示。

防刮措施

  • 挑战IP封锁和验证码
  • 解决方案: Crawlbase 提供轮换代理和验证码处理

动态内容

  • 挑战JavaScript渲染的页面
  • 解决方案使用无头浏览器或 Crawlbase的渲染引擎
  • 挑战LinkedIn 服务条款限制
  • 解决方案只关注公开数据,并尊重隐私法

数据量

  • 挑战处理大型数据集
  • 解决方案异步请求和结构化存储
LinkedIn 抓取工具智能 CTA 横幅

入门 Crawlbase

使用以下方式抓取 LinkedIn Crawlbase“ Crawling API您需要设置 Python 环境。开始之前,请查看 LinkedIn定价 点击此处。

1. 安装 Python:

从以下位置下载并安装 Python 官方网站. 确保在安装过程中将 Python 添加到系统的 PATH 中。

2. 创建虚拟环境:

打开终端或命令提示符并导航到项目目录。通过运行以下命令创建虚拟环境:

1
python -m venv venv

激活虚拟环境:

  • 在Windows上:

    1
    .\venv\Scripts\activate
  • 在 macOS/Linux 上:

    1
    资源 venv/bin/激活

3。 安装 Crawlbase 图书馆:

激活虚拟环境后,安装 Crawlbase 使用 pip 的库:

1
点安装爬虫库

抓取 LinkedIn 个人资料:

首先导入必要的库并初始化 Crawlbase 使用您的访问令牌访问 API。定义您要抓取的 LinkedIn 个人资料的 URL,并设置抓取选项。

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
 爬行基地 进口 抓取API
进口 JSON

# 初始化 Crawlbase 使用访问令牌的 API
爬行 API = 爬行 API({ '令牌': '你的 API 令牌' })

网址= 'https://www.linkedin.com/in/kaitlyn-owen'

选项= {
'刮刀': 'linkedin-个人资料',
‘异步’: '真的'
}

# 使用以下函数发出请求 Crawlbase API
DEF make_crawlbase_request(网址):
响应=crawling_api.get(url,选项)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法获取页面。状态代码:”, 回复['状态代码'])
回报 没有

DEF scrape_profile(网址):
尝试:
json_response = make_crawlbase_request(url)
if json_响应:
回报 json_响应
特殊课程 as e:
打印(f"请求失败: {e}")

回报 没有

if __名字__ == '__主要__':
scraped_data = scrape_profile(网址)
打印(json.dumps(scraped_data, 缩进=2))

此脚本初始化 Crawlbase API,定义要抓取的 LinkedIn 个人资料的 URL,并使用 linkedin-profile scraper。它发出异步请求来获取配置文件数据并打印 JSON 响应。

示例输出:

1
2
3
{
“摆脱”: "1dd4453c6f6bd93baf1d7e03"
}

从中检索数据 Crawlbase Cloud Storage:

使用异步请求时, Crawlbase Cloud Storage 保存响应并提供请求标识符 (rid)。您需要使用此 rid 来检索数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 爬行基地 进口 存储API
进口 JSON

# 初始化 Crawlbase Cloud Storage 使用您的访问令牌
storage_api = StorageAPI({ '令牌': '你的 API 令牌' })

RID = ‘你的请求标识符’

# 从中检索数据的函数 Crawlbase 存储
DEF 检索数据(摆脱):
响应 = storage_api.get(rid)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法检索数据。状态代码:”, 回复['状态代码'])
回报 没有

if __名字__ == '__主要__':
检索到的数据 = 检索到的数据(RID)
打印(json.dumps(retrieved_data,缩进=2))

该脚本使用 rid 检索存储的响应并打印 JSON 数据。

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
“概括”: [“我是一位积极进取的专业人士,热衷于亲自帮助外科医生……”],
“活动”: [
{
“标题”: “经许可——在另一家当地机构植入感染的主动脉移植物 4 年后。打高尔夫球,热爱生活。最好……”,
“关联”: “https://www.linkedin.com/posts/peter-rossi-md-facs-dfsvs-9393b934_aorta-aortaed-activity-7185799259269525504-DI5k?trk=public_profile”,
“图片”: "https://media.licdn.com/dms/image/D5622AQFKrMD3lTsK3w/feedshare-shrink_2048_1536/0/1713228047686?e=2147483647&v=beta&t=eZ4Blo9-IEPoDaF7TgUQbm-gFtDmRGTaW1uZOqLWEM4",
“归因”: {
“标题”: “Kaitlyn Owen 点赞”,
“关联”: “https://www.linkedin.com/in/kaitlyn-owen?trk=public_profile_actor-name”
}
},
{
“标题”: “凯特琳·欧文”,
“位置”: "",
“关联”: “https://www.linkedin.com/in/kaitlyn-owen-1a469575?trk=public_profile_samename-profile”,
“图片”: ,
“地点”: “华盛顿州雷德蒙德”
}
],
“类似资料”: []
}

抓取公司页面

使用 linkedin-company 用于收集组织数据的网络爬虫:

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
 爬行基地 进口 抓取API
进口 JSON

# 初始化 Crawlbase 使用访问令牌的 API
爬行 API = 爬行 API({ '令牌': '你的 API 令牌' })

网址= 'https://www.linkedin.com/company/amazon'

选项= {
'刮刀': 'linkedin-公司',
‘异步’: '真的'
}

# 使用以下函数发出请求 Crawlbase API
DEF make_crawlbase_request(网址):
响应=crawling_api.get(url,选项)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法获取页面。状态代码:”, 回复['状态代码'])
回报 没有

DEF scrape_company(网址):
尝试:
json_response = make_crawlbase_request(url)
if json_响应:
回报 json_响应
特殊课程 as e:
打印(f"请求失败: {e}")

回报 没有

if __名字__ == '__主要__':
scraped_data = scrape_company(网址)
打印(json.dumps(scraped_data, 缩进=2))

此脚本初始化 Crawlbase API,设置要抓取的 LinkedIn 公司页面的 URL,并指定 linkedin-company scraper。然后,脚本发出异步请求以获取公司数据并打印 JSON 响应。

示例输出:

1
2
3
{
“摆脱”: “f270321bbebe203b43cebedd”
}

从中检索数据 Crawlbase Cloud Storage

与个人资料抓取一样,异步请求将返回 rid。 你可以用这个 rid 检索存储的数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 爬行基地 进口 存储API
进口 JSON

# 初始化 Crawlbase Cloud Storage 使用您的访问令牌
storage_api = StorageAPI({ '令牌': '你的 API 令牌' })

RID = ‘你的请求标识符’

# 从中检索数据的函数 Crawlbase 存储
DEF 检索数据(摆脱):
响应 = storage_api.get(rid)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法检索数据。状态代码:”, 回复['状态代码'])
回报 没有

if __名字__ == '__主要__':
检索到的数据 = 检索到的数据(RID)
打印(json.dumps(retrieved_data,缩进=2))

该脚本使用 rid 检索并打印存储的公司数据。

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
“标题”: “亚马逊”,
“标题”: “软件开发”,
“封面图片”: "https://media.licdn.com/dms/image/D4D3DAQGri_YWxYb-GQ/image-scale_191_1128/0/1681945878609/amazon_cover?e=2147483647&v=beta&t=DEHImsFhQdlARMSTcY2AmdImxdLxIyvDncPmPQEpebY",
“公司形象”: "https://media.licdn.com/dms/image/C560BAQHTvZwCx4p2Qg/company-logo_200_200/0/1630640869849/amazon_logo?e=2147483647&v=beta&t=2vRB20XZOYNtXSr5GHAUUQXXII4lvgcotA2QTMcRHOI",
“网址”: “https://www.linkedin.com/company/amazon”,
“雇员”: {
“在职员工人数”: 737833,
“关联”: "https://www.linkedin.com/search/results/people/?facetCurrentCompany=%5B15218805%2C+2649984%2C+17411%2C+78392228%2C+208137%2C+61712%2C+2382910%2C+49318%2C+16551%2C+80073065%2C+47157%2C+21433%2C+71099%2C+860467%2C+12227%2C+167364%2C+4787585%2C+11091426%2C+451028%2C+111446%2C+14951%2C+46825%2C+2320329%2C+34924%2C+1586%5D"
},
{
“地址”: “Marcel-Breuer-Straße 12慕尼黑,巴伐利亚州 80807,德国”,
“关联”: “https://www.bing.com/maps?where=Marcel-Breuer-Stra%C3%9Fe+12+Munich+80807+Bavaria+DE&trk=org-locations_url”
}
]
},
“公司员工”: [
{
“标题”: 史蒂文·哈奇,
“位置”: “经验丰富的亚马逊工程主管 | 亚马逊的生成式人工智能”,
“关联”: “https://www.linkedin.com/in/hatch?trk=org-employees”,
“图片”: "https://media.licdn.com/dms/image/D4E03AQG823Q38d3Igg/profile-displayphoto-shrink_100_100/0/1673281011530?e=2147483647&v=beta&t=sK2PKC8tMDWU5koa0DpKxZzhQ1Zofs1shi941xNscrQ",
“地点”: ""
},

抓取 LinkedIn 信息流

使用以下方式监控活动流 linkedin-feed 刮刀:

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
 爬行基地 进口 抓取API
进口 JSON

# 初始化 Crawlbase 使用访问令牌的 API
爬行 API = 爬行 API({ '令牌': '你的 API 令牌' })

网址= “https://www.linkedin.com/feed/update/urn:li:activity:7022155503770251267”

选项= {
'刮刀': 'linkedin-feed',
‘异步’: '真的'
}

# 使用以下函数发出请求 Crawlbase API
DEF make_crawlbase_request(网址):
响应=crawling_api.get(url,选项)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法获取页面。状态代码:”, 回复['状态代码'])
回报 没有

DEF 抓取饲料(网址):
尝试:
json_response = make_crawlbase_request(url)
if json_响应:
回报 json_响应
特殊课程 as e:
打印(f"请求失败: {e}")

回报 没有

if __名字__ == '__主要__':
scraped_data = scrape_feed(网址)
打印(json.dumps(scraped_data, 缩进=2))

示例输出:

1
2
3
{
“摆脱”: "977b3381ab11f938d6522775"
}

从中检索数据 Crawlbase Cloud Storage

与个人资料和公司页面抓取一样,异步请求将返回 rid。 你可以用这个 rid 检索存储的数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 爬行基地 进口 存储API
进口 JSON

# 初始化 Crawlbase Cloud Storage 使用您的访问令牌
storage_api = StorageAPI({ '令牌': '你的 API 令牌' })

RID = ‘你的请求标识符’

# 从中检索数据的函数 Crawlbase 存储
DEF 检索数据(摆脱):
响应 = storage_api.get(rid)
if 回复['状态代码'] == 200:
回报 json.loads(响应['身体']。解码('拉丁1'))
其他:
打印(“无法检索数据。状态代码:”, 回复['状态代码'])
回报 没有

if __名字__ == '__主要__':
检索到的数据 = 检索到的数据(RID)
打印(json.dumps(retrieved_data,缩进=2))

此脚本使用以下方式检索并打印存储的供稿数据: rid.

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
“feeds” (提要): [
{
“文本”: “#AlphabetInc 首席执行官在一份员工备忘录中表示,该公司将裁员 12,000 人。此次裁员是 #technology 行业的最新一次动摇,几天前,该公司竞争对手微软公司宣布将裁员 10,000 人。完整报告 - https://lnkd.in/dfxXc2N4”,
“图片”: [
"https://media.licdn.com/dms/image/C4D22AQHvTzTp5mnMcg/feedshare-shrink_2048_1536/0/1674212335928?e=2147483647&v=beta&t=Aq3WKkxF1Q5ZwGB6ax6OOWRtCW7Vlz8KDdpBvvK4K_0"
],
“视频”: [],
“约会时间”: “1岁”,
“postUrl”: “https://in.linkedin.com/company/hindustantimes?trk=public_post_feed-actor-image”,
“用户名”: 《印度斯坦时报》,
“反应计数”: 1177,
“评论数”: 13,
“链接”: [
{
“文本”: “#AlphabetInc”,
“网址”: "https://www.linkedin.com/signup/cold-join?session_redirect=https%3A%2F%2Fwww.linkedin.com%2Ffeed%2Fhashtag%2Falphabetinc&trk=public_post-text"
},
{
“文本”: “#技术”,
“网址”: "https://www.linkedin.com/signup/cold-join?session_redirect=https%3A%2F%2Fwww.linkedin.com%2Ffeed%2Fhashtag%2Ftechnology&trk=public_post-text"
},

通过以下方式增强您的职业目标 Crawlbase

抓取 LinkedIn 数据可以为各种应用提供有价值的见解,从就业市场分析到竞争研究。 Crawlbase 自动化 LinkedIn 数据收集流程,让您能够专注于分析和利用信息。使用 Crawlbase很强大 Crawling API 和 Python,您可以有效地抓取 LinkedIn 个人资料、公司页面和信息。

如果您想扩展您的网络抓取功能,请考虑探索我们以下有关抓取其他重要网站的指南。

📜 如何抓取 Indeed 招聘信息
📜 如何从 LinkedIn 抓取电子邮件
📜 如何抓取 Airbnb
📜 如何抓取 Realtor.com
📜 如何抓取 Expedia

如果您有任何问题或反馈,我们的 支持团队 随时为您的网络抓取之旅提供帮助。快乐刮擦!

常见问题解答 (FAQs)

只要不违反 LinkedIn 的服务条款,抓取 LinkedIn 数据是合法的。务必查看 LinkedIn 的政策,确保您的抓取活动符合法律和道德准则。始终尊重隐私和数据保护法,并考虑使用官方提供的 API(如果可用)。

问:如何抓取 LinkedIn 数据?

要抓取 LinkedIn,您可以使用 Crawlbase“ Crawling API。首先,设置你的 Python 环境并安装 Crawlbase 库。根据您的需求(个人资料、公司或信息流)选择合适的抓取工具,并发出异步请求来收集数据。使用 Crawlbase Cloud Storage,它存储响应以便于访问。

问:抓取 LinkedIn 数据面临哪些挑战?

抓取 LinkedIn 数据面临诸多挑战。LinkedIn 拥有强大的反抓取措施,可能会阻止您的活动。LinkedIn 内容的动态特性使得持续提取数据变得困难。此外,您必须确保遵守法律和道德标准,因为违反 LinkedIn 的服务条款可能会导致账户被封禁或面临法律诉讼。使用像 Crawlbase 可以通过提供强大的抓取功能和遵循最佳实践来帮助缓解其中的一些挑战。

问:招聘方面最好的网络爬虫是什么?

LinkedIn个人资料抓取工具非常适合招聘,可帮助您提取候选人的信息,包括工作经历、技能和教育背景。结合公司信息抓取工具,您可以更好地了解潜在雇主。

问:我可以同时抓取多个用户资料吗?

是的,使用异步请求可以高效地抓取多个用户资料。 Crawlbase 支持每秒最多 20 个请求,并且 Storage API 允许您使用其唯一的请求标识符 (rid) 检索所有结果。