LinkedIn API的Python包装器
linkedin-api的Python项目详细描述
LinkedIn_API
_ LinkedIn API的Python包装器
< Buff行情>无需"官方"API访问-只需使用有效的LinkedIn帐户!
使用常规LinkedIn用户帐户,以编程方式发送消息、执行搜索、获取配置文件数据等等!
自行承担使用风险
此项目只能用作学习项目。使用它会违反LinkedIn的用户协议。我不负责你的帐户被封锁(他们肯定会这样做-见用户协议第8.2节)。提示:不要使用您关心的LinkedIn帐户)
概述
这个项目试图为LinkedIn API提供一个简单的Python接口。
< Buff行情>您指的是合法的LinkedIn API吗?
不!要检索结构化数据,LinkedIn网站使用他们称为"旅行者"的服务。旅行者的端点让我们可以从LinkedIn访问几乎所有我们想要的东西:个人资料、公司、连接、消息等等。-你在LinkedIn.com上看到的任何东西,我们都可以从旅行者那里获得。因此,本项目旨在为旅行者提供全面的服务。
想做贡献吗?
学习如何查找端点
安装
$ pip install linkedin-api
示例用法
fromlinkedin_apiimportLinkedin# Authenticate using any Linkedin account credentialsapi=Linkedin('reedhoffman@linkedin.com','iheartmicrosoft')# GET a profileprofile=api.get_profile('billy-g')# GET a profiles contact infocontact_info=api.get_profile_contact_info('billy-g')# GET all connected profiles (1st, 2nd and 3rd degree) of a given profileconnections=api.get_profile_connections('1234asc12304',max_connections=200)
文档
有关完整的参考文档,请参阅docs.md
开发设置
依赖关系
- 巨蟒3.7
- 有效的LinkedIn用户帐户(如果可能,请不要使用您的个人帐户)
- PIPENV(可选)
安装
创建一个
.env
配置文件。示例在.env.example
中提供-您至少包括在其中设置的所有设置。使用pipenv…
$ pipenv install $ pipenv shell
< > >- 2FA
- 费率限制-"看起来你在LinkedIn上访问的页面数量非常高。"注意-n=1个实验,在一个会话(在一小时内)中大约900个连续请求(包括每个请求之间的随机延迟)以及一堆测试之后,此页被点击,因此谁知道实际的限制。
- 使用标准
搜索
方法搜索"软件"等常规关键字时,里程数可能会有所不同。他们最近在搜索方面增加了一些智能,如果查询足够通用,他们可以根据人员、公司、工作等对搜索结果进行分组。尽可能使用实体特定的搜索方法(即搜索人员)。
查看源代码
command-f
/在页面中搜索数据中的某个关键字。这将存在于<;code>;
标记中。- 向下滚动到下一个相邻元素这将是另一个
<;code>;
标记,可能带有类似于<codestyle="display: none"id="datalet-bpr-guid-3900675"> {"request":"/voyager/api/identity/profiles/tom-quirk/profileView","status":200,"body":"bpr-guid-3900675"} </code>
- 请求的值是url!伍特: < > >
运行测试
$ python -m pytest tests
故障排除
>;我一直在接受挑战!?!
LinkedIn会以挑战URL的形式向你抛出一个曲线球。我们现在不处理,所以你有点搞砸了。我们认为它只能基于IP(即从不同的位置登录)。您获得解决方案的最佳机会是注销并重新登录浏览器。
挑战的已知原因:
遇到它们时请添加更多内容。
搜索困难
< A/>
深入概述
旅行者的端点如下:
https://www.linkedin.com/voyager/api/identity/profileView/tom-quirk
或者,更清楚地说
___________________________________ _______________________________
| base path | resource |
https://www.linkedin.com/voyager/api /identity/profileView/tom-quirk
它们通过一个简单的cookie进行身份验证,我们会随每个请求一起发送该cookie,同时发送一堆头。
为了获得cookie,我们将给定的用户名和密码(linkedin的有效用户帐户)发布到https://www.linkedin.com/uas/authenticate
< A/>
查找终结点…
我们正在看LinkedIn网站,发现了一些我们想要的数据。现在怎么办?
找到相关端点的最可靠方法是:
您也可以使用浏览器开发工具中的网络
选项卡,但您会遇到混合的结果。
客户如何查询旅行者
LinkedIn似乎已经开发了一种内部查询语言/语法,客户端(如LinkedIn.com等前端)可以在其中指定他们想要的数据(类似于GraphQL概念)。如果有人知道这是什么,我很想知道!
下面是一个请求组织的名称
和组
的示例(它管理的LinkedIn组):
/voyager/api/organization/companies?decoration=(name,groups*~(entityUrn,largeLogo,groupName,memberCount,websiteUrl,url))&q=universalName&universalName=linkedin
"查询"发生在装饰
参数中,它看起来像
(
name,
groups*~(entityUrn,largeLogo,groupName,memberCount,websiteUrl,url)
)
因此,在这里,我们需要一个组织名称和组列表,对于每个组,我们需要largelogo
,group name
,等等。
不同的端点使用不同的参数(甚至可能使用不同的语法)来指定这些查询。注意,上面的查询有一个参数q
的值是universalname
;然后用decoration
参数指定查询。
相反,/search/cluster
端点使用q=guided
,并使用guided
参数指定其查询,其值类似于
$ pip install linkedin-api
0
有可能记录(并实现一个很好的接口)这种查询语言-随着我们向这个项目添加更多的端点,我相信如果这样的事情是可能的(如果值得的话),它将变得更加清晰。