python selenium 爬取领英的数据

2023-05-16

# -*- coding: utf-8 -*-
import os
import pickle
import time

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import csv
from selenium import webdriver
from scrapy.selector import Selector
from scrapy.selector import HtmlXPathSelector
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
option = webdriver.ChromeOptions()
option.add_argument("headless")
brower = webdriver.Chrome(options=option)
brower = webdriver.Chrome()

def getLinkeninCookies():
    # get login taobao cookies
    url = 'https://www.linkedin.com/feed/'
    brower.get('https://www.linkedin.com/login/')
    time.sleep(1)
    brower.find_element_by_xpath('//*[@id="username"]').send_keys('183851063@qq.com')
    brower.find_element_by_xpath('//*[@id="password"]').send_keys('123456yp')
    brower.find_element_by_xpath('//*[@id="app__container"]/main/div/form/div[3]/button').click()

    while True:
        print("Please login in linkedin.com!")
        time.sleep(1)
        # if login in successfully, url  jump to www.taobao.com
        while brower.current_url ==  url:
            tbCookies  = brower.get_cookies()
            brower.quit()
            cookies = {}
            for item in tbCookies:
                cookies[item['name']] = item['value']
            outputPath = open('linkeninCookies.pickle','wb')
            pickle.dump(cookies,outputPath)
            outputPath.close()
            return cookies
def readLinkeninCookies():
    # if hava cookies file ,use it 
    # if not , getTaobaoCookies()
    if os.path.exists('linkeninCookies.pickle'):
        readPath = open('linkeninCookies.pickle','rb')
        tbCookies = pickle.load(readPath)
    else:
        tbCookies = getLinkeninCookies()
    return tbCookies
def findTotalPage():
    tbCookies = readLinkeninCookies()
    brower.get("https://www.linkedin.com")
    brower.delete_all_cookies()
    for cookie in tbCookies:
        brower.add_cookie({
        "domain":".linkedin.com",
        "name":cookie,
        "value":tbCookies[cookie],
        "path":'/',
        "expires":None
    })
    brower.get("https://www.linkedin.com/search/results/all/?keywords=%E6%9F%AF%E9%A9%AC%E5%B7%A5%E7%A8%8B&origin=GLOBAL_SEARCH_HEADER")
    time.sleep(1)
    
    brower.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    time.sleep(1)
    Element=brower.find_element_by_xpath('/html/body/div[5]/div[7]/div[4]/div/div[2]/div/div[2]/div/div/div/div/div[1]/artdeco-pagination/ul/li[10]/button/span')
    return Element.text
def getInfo():
    tbCookies = readLinkeninCookies()
    brower.get("https://www.linkedin.com")
    time.sleep(2)
    brower.delete_all_cookies()
    for cookie in tbCookies:
        brower.add_cookie({
        "domain":".linkedin.com",
        "name":cookie,
        "value":tbCookies[cookie],
        "path":'/',
        "expires":None
    })
    brower.get('https://www.linkedin.com/search/results/all/?keywords=%E6%9F%AF%E9%A9%AC%E5%B7%A5%E7%A8%8B&origin=GLOBAL_SEARCH_HEADER')
    time.sleep(0.5)
    brower.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    time.sleep(2)
    ul = brower.find_elements_by_css_selector('.search-result__wrapper')
    person = []
    for li in ul:
        name = li.find_element_by_css_selector('span.actor-name').text
        job = li.find_element_by_css_selector('p.subline-level-1').text
        localtion = li.find_element_by_css_selector('p.subline-level-2').text
        rs = isElementExist(li,'p.search-result__snippets')
        if rs:
            company = li.find_element_by_css_selector('p.search-result__snippets').text
        else:
            company = None
        person.append([name,job,localtion,company])
    with open('data.csv','w',newline='',encoding='utf-8-sig') as file:
        writer = csv.writer(file)
        writer.writerow(["name","job","localtion","company"])
        m = len(person)
        for i in range(m):
            writer.writerow(person[i])

def isElementExist(parent,element):
        flag=True
        try:
            parent.find_element_by_css_selector(element)
            return flag
        except:
            flag=False
            return flag       
if __name__ == "__main__":
    
    getInfo()
    brower.quit()
    

网上看令很多资料,发现他们的都无法抓取数据,自己利用seleniun 和 driver 自己写令一个爬虫,可以按照搜索公司名字,爬取职工的基本信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python selenium 爬取领英的数据 的相关文章

  • Copilot使用教程

    官网及申请地址 xff1a https copilot github com 教程包含如下内容 xff1a copilot简单介绍使用python对copilot做些简单使用测试使用copilot对LeetCode 题目解答 一 copil
  • Python打包与解压zip

    打包 shutil模块 shutil make archive base name format root dir base dir verbose dry run owner group logger 参数说明 xff1a base na
  • powershell批量修改文件名称。

    下面的代码能够给桌面 都彭 文件夹下的所有目录文件名称增加都 都彭 两个字 Get ChildItem Path F Desktop 都彭 获取这个目录下的所有文件 增加recurse参数后能够对这个目录进行递归获包含子目录的所有文件名 利
  • ThinkPad相机打开灰色加斜杠问题解决!!!

    问题是这样的 xff01 xff01 xff01 很久前是这样的 xff0c 一直弄不好 xff0c 删了驱动 xff0c 重装驱动 xff0c 注册表弄了 xff0c 反正是各种弄 xff0c 各种帖子找了还是不行 xff01 xff01
  • SSL error when connecting to the Jack server. Try ‘jack-diagnose‘

    Android7 编译出现jack admin启动问题 xff1a log如下 xff1a Launching Jack server java XX MaxJavaStackTraceDepth 61 1 Djava io tmpdir
  • 【IOS】史上最全文件操作NSFileManager

    功能列表 判断文件是否存在 43 BOOL fileExistsAtPath NSString aPath 判断文件是否存在Documents下 43 BOOL fileExistsAtDocumentsWithFileName NSStr
  • 【IOS】StoryBoard传值TableView点击Cell跳转传值(segue)

    问题 void prepareForSegue UIStoryboardSegue segue sender id sender 以上方法会先于 void tableView UITableView tableView didSelectR
  • Android Windows虚拟串口调试

    1 Configure Virtual Serial Port Driver 创建虚拟串口 2 设置Android模拟器虚拟串口 进入Android SDK的tools目录 xff0c 通过cmd执行命令 xff1a emulator ex
  • 贪心算法之木棍问题

    问题 H 木棒 时间限制 1 Sec 内存限制 32 MB 提交 147 解决 60 提交 状态 题目描述 现有n根木棒 xff0c 已知它们的长度和重量 要用一部木工机一根一根地加工这些木棒 该机器在加工过程中需要一定的准备时间 xff0
  • cephadm安装ceph v15

    cephadm 安装ceph v15准备 参考安装文档 有问题可以直接留言 xff0c 大家一起交流 xff0c 以下都是部署的比较基础的东西 https docs ceph com en latest cephadm http www d
  • Mysql启用SSL以及JDBC连接Mysql配置

    文章目录 一 Mysql启用SSL配置1 检查mysql是否支持ssl2 设置用户是否使用ssl连接1 查看用户是否使用SSL连接2 强制某用户使用SSL连接3 测试不使用ssl能否连接上4 取消用户使用ssl连接 二 JDBC连接Mysq
  • Proxmox ve 使用cloud-init模板生成虚拟机

    本文中斜体字部分为命令行 1 Cloud init 的作用 cloud init是一个Linux虚拟机的初始化工具 xff0c 被广泛应用在AWS和OpenStack等云平台中 xff0c 用于快速新建虚拟机 xff0c 并进行一些系统初始
  • YUV文件转opencv的Mat格式并且显示播放

    include lt stdio h gt include lt string h gt include lt opencv2 core core hpp gt include lt opencv2 imgproc imgproc hpp
  • python 元组的元素的元素可以被修改

    Python的元组与列表类似 xff0c 不同之处在于元组的元素不能修改 元组使用小括号 xff0c 列表使用方括号 元组创建很简单 xff0c 只需要在括号中添加元素 xff0c 并使用逗号隔开即可 假设元组的第3个元素是一个字典 xff
  • VOT Toolkit工具使用说明(Python版)

    VOT Toolkit工具使用说明 xff08 Python版 xff09 一 工具链接 vot toolkit python版 github链 xff1a https github com votchallenge toolkit vot
  • 构建ubuntu base 出现apt update错误

    apt get update 错误 Get 1 http ports ubuntu com ubuntu ports bionic InRelease 242 kB Err 1 http ports ubuntu com ubuntu po
  • pip 安装numba报错

    pip 安装numba报错 问题描述 xff1a 本人在一个十分干净的容器里面 xff0c 想pip安装numba库 xff0c 但是该库需要依赖llvmlite这个库 xff0c 然后就它自己安装llvmlite的时候 xff0c 就报错
  • VS code 进行python远程运行与调试以及简单可视化变量

    23 04 29更新 xff0c 增加环境变量的debug配置项 23 03 24更新 这个配置项实在太常用了 置顶了 我这自己也天天开这篇文章复制粘贴的 34 name 34 34 train debug 34 34 type 34 34
  • VScode debuger 的不算bug的bug,不运行了

    具体办法就是改python拓展的版本 xff0c 记得要关闭自动更新 xff0c 不然一会插件又不能用了 改进详情 xff0c 见这位大佬吧 xff0c 我就不细说了 利用vscode对python代码做Debug xff0c 无法调试的解
  • latex引用跳转失效

    这两天写论文 xff0c 写也就写了 xff0c 某一次查看的时候 xff0c 突然发现 xff0c 全文的引用跳转通通失效 就引用序号都对着呢 xff0c 不是显示的 xff1f 号那种完全找不到的情况 但是点击那个跳转引用的超链接 xf

随机推荐

  • WinEdt修改快捷键,自定义功能按键,增加快捷指令

    xff08 还得搞封面 xff0c 随便敲几个字吧 xff09 在前一段时间 xff0c 为了快速加粗Latex里面的文字 xff0c 就查了一下怎么搞快捷键 在菜单栏Insert gt Font gt Bold是有这个加粗按钮的 xff0
  • Ubuntu下能连上无线但不能上网

    Ubuntu下连上无线网以后 xff0c 无法上网问题 先确认是否可以访问网路 xff0c 使用一下命令 ping www baidu com 正常理论下 xff0c 上面一句应该是连不通 xff0c 会返回无法解析 然后我们再ping一下
  • uefi和legacy bios的深度剖析

    这个是我总结的 参考了几个论坛还有 鸟哥的私房菜 还有一部分是我自己的经验 适合初步了解uefi和legacy的人更深入的了解 uefi amp legacy Legacy 1 我们可将MBR磁盘分区结构用下图简单表示 xff08 Wind
  • 大数据Hadoop生态圈介绍

    大数据Hadoop生态圈 组件介绍 Hadoop是目前应用最为广泛的分布式大数据处理框架 xff0c 其具备可靠 高效 可伸缩等特点 Hadoop的核心组件是HDFS MapReduce 随着处理任务不同 xff0c 各种组件相继出现 xf
  • Mybatis Plus如何使用自定义方法实现分页呢?

    转自 Mybatis Plus如何使用自定义方法实现分页呢 下文笔者讲述Mybatis之Plus实现自定义分页的方法分享 如下所示 写在前面的话 在以前没有自定义分页方法时 我们使用Limit currIndex 和 pageSize 在M
  • ESP32使用ESP-IDF,以太网联网和WIFI网络切换注意事项

    记录一个使用问题 xff0c 以便有需要的道友查阅 需要实现的功能 xff1a 在上电一次对有线无线进行检测 xff0c 联网的优先级为有线 gt 无线 问题 xff1a 在程序编写的初步 xff0c 写了两个网络回调函数并进行初始化操作
  • camera中的VSYNC,HSYNC作用?时序关系?

    HSYNC xff1a 行锁存 xff0c 换行信号 VSYNC xff1a 祯锁存 xff0c 换页信号 320 240的屏 xff0c 每一行需要输入320个脉冲来依次移位 锁存进一行的数据 xff0c 然后来个HSYNC 脉冲换一行
  • 常见 win32.com 操作

    import win32com client from win32api import RGB xlapp 61 win32com client gencache EnsureDispatch 34 Ket Application 34 x
  • Mac 使用brew 问题(很慢)

    brew install or brew update 都很慢 xff01 使用国内的镜像 xff1a 1 替换现有上游 git C 34 brew repo 34 remote set url origin https mirrors t
  • ubuntu 安装PHP扩展

    sudo apt get install php7 0 bcmath sudo apt get install php7 0 bz2 sudo apt get install php7 0 calendar sudo apt get ins
  • vue3 ts 中ref 调用子组件的方法

    const uploadModal 61 ref 数据中return return t value onSearch toRefs state columns getBasicColumns handleTableChange create
  • 在mac电脑上,用Safari浏览器调试ios手机移动端页面

    打开iphone手机的开发者模式 xff0c 流程是 xff1a 设置 gt Safari gt 高级 gt 开启 Web检查器 具体如下图所示 打开Mac上Safari的开发者模式 xff0c 流程是 Safari gt 偏好设置 gt
  • wordpress 网站迁移

    1 网站打包上传 2 数据备份上传 3 数据库里中的域名修改 UPDATE wp options SET option value 61 replace option value 39 old domain com 39 39 new do
  • 【go 格式化代码】

    gofmt l w s sample bucket metaquery go gofmt main go
  • go build

    1 MAC 下编译 Linux Windows linux CGO ENABLED 61 0 GOOS 61 linux GOARCH 61 amd64 go build o name main go windows CGO ENABLED
  • 给docker中的PHP安装 gd扩展

    在容器内使用docker php ext install gd安装gd xff0c 使用过程中一些程序报错Call to undefined function imagettftext 在phpinfo中发现它只支持png xff0c 所以
  • Ubuntu内核升级以及如何开启BBR加速(亲测可行,速度确实有所加快)

    BBR是个什么东西我就不赘述了 xff0c 可以理解为和锐速差不多的一个东西 xff0c 但是呢 xff0c 锐速过高的价格和不再低端售卖 导致了我们并无法实现一个免费好用的单边加速功能 xff1b 所以 xff0c 在这个前提下 xff0
  • android wifi ap 自动开启

    花了几天时间 xff0c 了解了下android wifi 从上到下的流程 实现了自动开启wifi热点 找到了些资料 在这分享给大家了 xff01 http blog csdn net androidchuxueze article det
  • mac 笔记本安装vue,始终找不到命令

    亲测有效 这种问题我已经解决了 xff0c 主要是你的npm全局路径不对导致的 npm安装一些常见工具比如 gulp npm install g gulp 提示安装成功之后 xff0c 使用发现不存在comman gulp 这个时候我们要检
  • python selenium 爬取领英的数据

    coding utf 8 import os import pickle import time from selenium import webdriver from selenium webdriver support wait imp