Python 使用Selenium 爬取Linkedin领英数据

简单的介绍

众所周知,领英的反爬做的是真不绰,所以在爬取过程中共采取过两个方法。第一个是想借助百度快照,百度会每隔一段时间在全网进行爬取,所以猜想可以从百度这个中间商那里得到数据。第二个方法是“硬爬”。顾名思义,就是在登陆账号的状态下一个个爬取,详情会在下文提到。

已有资料

在爬取之前,手头已有要爬取的员工所在企业名单,文件类型是xlsx.。还需要领英账号(多个),如果出现要提交身份证信息的时候建议换个账号。

百度快照爬取

这个方法是一开始想做的,在效果上其实比较一般。因为有两个问题:一是百度快照仅能爬取域名为cn. 开头的领英页面,但是有很多大型企业或者外企的员工的领英页面为hk. 等非内地域名,是无法通过快照获得的。二是被百度快照爬下的领英数据本身就不完整,会有较多遗漏。尽管如此,我还是将方法和代码写在这里,供有需要的使用和改进。

第一步

虽然载体是百度快照,但是写爬虫还是比较推荐一段代码做一件事,因为在过程中会有奇奇怪怪的突发状况发生,一口气吃成一个胖子会debug de上天。所以第一步做的事情就是先将公司名字输入百度,然后从搜索结果中爬取需要的网址并保存。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import MoveTargetOutOfBoundsException
from selenium.webdriver.chrome.options import Options
import time
from xlutils.copy import copy
import pandas as pd


def click_by_time(driver,xpath,maxTime):#防止动态元素未加载出来,无法点击导致程序出错,故定义该方法,等元素加载出来再点击它
    t = 0
    while t<=maxTime:
        if driver.find_element_by_xpath(xpath)!=None: 
            driver.find_element_by_xpath(xpath).click()
            break
        time.sleep(1)
        t+=1    
#此处为企业名单
xlsx = pd.ExcelFile(r'C:\Users\12610\领英\汽车整车制造企业名单.xlsx')
data = pd.read_excel(xlsx,'Sheet1')
for indexs in data.index:
    print(indexs)
    key = str(data.loc[indexs].values)[2:-2] + ' 领英 site:cn.linkedin.com'
    #[2:-2]的处理是由于字符串又引号
    chrome_options = Options()
    chrome_driver = r"C:\Users\12610\AppData\Local\Google\Chrome\Application\chromedriver.exe"
    #这里换成自己的路径
    driver = webdriver.Chrome(chrome_driver,options=chrome_options)
    driver.get('https://www.baidu.com/')

    #定位搜索框,输入企业名并点击百度一下
    searchingBox = driver.find_element_by_xpath('//*[@id="kw"]')
    searchingBox.send_keys(key)
    click_by_time(driver,'//*[@id="su"]',10)
    time.sleep(2)
    #有用的搜索结果中有'| 领英',这步算是筛选
    pattern = '| 领英'
    titles = driver.find_elements_by_class_name('c-container')#所有搜索结果节点class均为'c-container'
    
    #进一步定位到网址,网址中有cache即为快照页面,是我们目前需要的
    from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import MoveTargetOutOfBoundsException
from selenium.webdriver.chrome.options import Options
import time
from xlutils.copy import copy
import pandas as pd


def click_by_time(driver,xpath,maxTime):#防止动态元素未加载出来,无法点击导致程序出错,故定义该方法,等元素加载出来再点击它
    t = 0
    while t<=maxTime:
        if driver.find_element_by_xpath(xpath)!=None: 
            driver.find_element_by_xpath(xpath).click()
            break
        time.sleep(1)
        t+=1    

xlsx = pd.ExcelFile(r'C:\Users\12610\领英\汽车整车制造企业名单_refined.xlsx')
data = pd.read_excel(xlsx,'Sheet1')
for indexs in range(5):
    print(indexs)
    key = str(data.loc[indexs].values)[2:-2] + ' site:linkedin.com'
    chrome_driver = r"C:\Users\12610\AppData\Local\Google\Chrome\Application\chromedriver.exe"
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    driver = webdriver.Chrome(chrome_driver,options=chrome_options)
    driver.get('https://www.baidu.com/')

    #定位搜索框
    searchingBox 
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值