LinkedIn API的Python包装器

linkedin-api的Python项目详细描述


LinkedIn_API

_ LinkedIn API的Python包装器

pypi version

< 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(可选)

安装

  1. 创建一个.env配置文件。示例在.env.example中提供-您至少包括在其中设置的所有设置。

  2. 使用pipenv…

    $ pipenv install
    $ pipenv shell
    
  3. < > >

    运行测试

    $ python -m pytest tests
    

    故障排除

    >;我一直在接受挑战!?!

    LinkedIn会以挑战URL的形式向你抛出一个曲线球。我们现在不处理,所以你有点搞砸了。我们认为它只能基于IP(即从不同的位置登录)。您获得解决方案的最佳机会是注销并重新登录浏览器。

    挑战的已知原因:
    • 2FA
    • 费率限制-"看起来你在LinkedIn上访问的页面数量非常高。"注意-n=1个实验,在一个会话(在一小时内)中大约900个连续请求(包括每个请求之间的随机延迟)以及一堆测试之后,此页被点击,因此谁知道实际的限制。

    遇到它们时请添加更多内容。

    搜索困难
    • 使用标准搜索方法搜索"软件"等常规关键字时,里程数可能会有所不同。他们最近在搜索方面增加了一些智能,如果查询足够通用,他们可以根据人员、公司、工作等对搜索结果进行分组。尽可能使用实体特定的搜索方法(即搜索人员)。

    < 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网站,发现了一些我们想要的数据。现在怎么办?

    找到相关端点的最可靠方法是:

    1. 查看源代码
    2. command-f/在页面中搜索数据中的某个关键字。这将存在于<;code>;标记中。
    3. 向下滚动到下一个相邻元素这将是另一个<;code>;标记,可能带有类似于
      <codestyle="display: none"id="datalet-bpr-guid-3900675">
        {"request":"/voyager/api/identity/profiles/tom-quirk/profileView","status":200,"body":"bpr-guid-3900675"}
      </code>
    4. 请求的值是url!伍特:
    5. < > >

      您也可以使用浏览器开发工具中的网络选项卡,但您会遇到混合的结果。

      客户如何查询旅行者

      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)
      )
      

      因此,在这里,我们需要一个组织名称和组列表,对于每个组,我们需要largelogogroup name,等等。

      不同的端点使用不同的参数(甚至可能使用不同的语法)来指定这些查询。注意,上面的查询有一个参数q的值是universalname;然后用decoration参数指定查询。

      相反,/search/cluster端点使用q=guided,并使用guided参数指定其查询,其值类似于

      $ pip install linkedin-api
      
      0

      有可能记录(并实现一个很好的接口)这种查询语言-随着我们向这个项目添加更多的端点,我相信如果这样的事情是可能的(如果值得的话),它将变得更加清晰。

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
java在24小时和12小时之间转换   设置适配器时出现java“空对象”错误   java jmap支持堆转储的ascii格式和二进制转储格式   检索节点的子级值时发生java db4o透明激活Null异常   java在DeepLearning4j中实现DotProduct层   用于端点的java Camel处理器   返回elasticsearch java api中已分析的非存储文本字段的子字符串   java将变量传递给进程   java当web服务器上没有流量时,它能将自己设置为睡眠模式吗?   哈希集的java底层数据结构   java中的文件处理zip创建错误   jpackage应用程序的java配置文件无法解析/扩展变量   java Jackson JsonMappingException在json具有嵌套的相同节点时发生启动_数组错误   java类引用取自不同的jar