我是如何制作一个网络爬虫的,因为 LinkedIn
对很多人来说,拥有大量的 LinkedIn 人脉关系非常方便。你和你的联系人通过该平台同意建立联系,从而共享一些公开信息,包括你的电子邮件地址(大多数情况下,你可以选择不共享)。这一切看起来都很美好,直到你真正想要使用从联系人那里获得的所有数据……这取决于你想要哪些数据……
问题
假设您想从 LinkedIn 导出所有联系人的数据,您可以按照此处的说明进行操作。它会生成一个 CSV 文件,其中包含每个联系人的以下信息:First Name, Last Name, Email Address, Company, Position, Connected On
所以问题出在哪里呢?虽然 CSV 文件中确实有“邮箱地址”这一列,但它实际上并没有提供任何联系人的邮箱地址!我猜他们以前提供过,但后来没有更新导出 CSV 文件来移除这一列。我还查看了他们的公共 API,没有找到任何与联系人邮箱相关的信息,不过我在StackOverflow 上找到了一个讨论,其中提到他们以前确实提供过这些信息,但现在不提供了。LinkedIn 到底在搞什么鬼?所以我决定自己抓取所有联系人的邮箱地址。当然,我可以手动获取,但要获取我 2000 多个联系人的邮箱地址,那得花多少时间啊!
解决方案
为了实现这个目标,我需要脚本做什么呢?首先,我需要它登录,然后搜索联系人的名称,进入其个人资料页面,并获取电子邮件地址。很简单……对吧?
第一次尝试
我之前一直用LinkedIn的搜索功能获取邮箱地址,直到他们因为我的搜索请求过多而怀疑我的账户存在可疑行为,并半封禁了我的账户。当时我已经建立了大约500个联系人。
第二次尝试
或许我应该更谨慎地控制每隔一段时间的搜索次数。所以我添加了设置时间间隔(默认为 1 小时)和设置每个时间间隔内要搜索的电子邮件数量(默认为 50 封)的选项。
LinkedIn真是些狡猾的家伙,他们又把我半封禁了!我查了一下这种半封禁机制,发现它是为了防止自动机器人恶意操作而设计的。真是棒极了……
第三次尝试
我原以为搜索限制只适用于一般搜索,所以我们尝试在输入连接名称后出现的建议框中直接点击该连接。
原来我用来抓取页面的库(NightmareJS)没有检测到那个DOM元素,所以我没办法对它进行任何操作。唉……
第四次也是最后一次尝试

一番苦思冥想,甚至一度想放弃这个小项目之后,我终于想到了另一种方法……直接进入我的联系人列表,使用联系人搜索框,这样就只会搜索我的联系人。结果,这种方法竟然奏效了,而且没有搜索限制!
收集完所有邮件地址后,我只需创建一个email.txt包含所有邮件地址的文件即可。就这么简单!
简而言之,
我想获取我所有LinkedIn人脉的邮箱地址。LinkedIn没有提供通过导出人脉数据来获取邮箱地址的选项,所以我创建了一个网络爬虫来获取它们。
如果您有兴趣查看剧本,可以点击此处访问。
笔记
如果 LinkedIn 更新了页面并更改了脚本中使用的某个元素的类,脚本将停止工作。您可以查看源代码,确认 LinkedIn 上是否有任何类发生了更改,并更新脚本使其恢复正常工作。
感谢阅读!
文章来源:https://dev.to/futoricky/how-i-made-a-web-scraper-script-because-linkedin-27fc
