使用headless浏览器在Linkedin上搜索公共可用的工作
linkedin-jobs-scraper的Python项目详细描述
linkedin工作刮板
Scrape public available jobs on Linkedin using headless browser. For each job, the following fields are extracted:
job_id
,link
,apply_link
,title
,company
,place
,description
,description_html
,date
,seniority_level
,job_function
,employment_type
,industries
.
目录
- Requirements
- Installation
- Usage
- Anonymous vs authenticated session
- Rate limiting
- Filters
- Company filter
- Logging
- License
要求
- Chrome或{a11}
- Chromedriver
- Python>;=3.6
安装
安装程序包:
pip install linkedin-jobs-scraper
使用
^{pr2}$匿名与身份验证会话
默认情况下,scraper将以匿名模式运行(不需要身份验证)。在某些环境中(如AWS或Heroku) 但这可能是不可能的。您可能会遇到以下错误消息:
Scraper failed to run in anonymous mode, authentication may be necessary for this environment.
在这种情况下,唯一可用的选项是使用经过身份验证的会话运行。所需步骤如下:
- 使用您选择的帐户登录LinkedIn。在
- 打开Chrome开发工具:
- 转到选项卡
Application
,然后从左面板选择Storage
->;Cookies
->;https://www.linkedin.com
。在 主视图定位名为li_at
的行并从列Value
复制内容。在
- 使用步骤3中获得的值设置环境变量
LI_AT_COOKIE
,然后正常运行应用程序。 示例:
LI_AT_COOKIE=<your li_at cookie value here> python your_app.py
速率限制
在执行过程中,您可能会遇到以下速率限制警告:
[429] Too many requests. You should probably increase scraper "slow_mo" value or reduce concurrency.
这意味着您超过了服务器允许的每秒请求数(尤其是在 在速率限制更严格的情况下使用经过身份验证的会话)。您可以通过以下方法克服此问题:
- 为
slow_mo
参数尝试更高的值(这将减慢scraper的执行)。在 - 减少
max_workers
的值以限制并发。我建议在authenticated中使用不超过一个worker 模式。在
过滤器
可以使用以下筛选器自定义查询:
- 相关性:
RELEVANT
RECENT
- 时间:
DAY
WEEK
MONTH
ANY
- 类型:
FULL_TIME
PART_TIME
TEMPORARY
CONTRACT
- 经验水平:
INTERNSHIP
ENTRY_LEVEL
- ^{cd22}
MID_SENIOR
DIRECTOR
有关详细信息,请参见以下示例:
fromlinkedin_jobs_scraper.queryimportQuery,QueryOptions,QueryFiltersfromlinkedin_jobs_scraper.filtersimportRelevanceFilters,TimeFilters,TypeFilters,ExperienceLevelFiltersquery=Query(query='Engineer',options=QueryOptions(locations=['United States'],optimize=False,limit=5,filters=QueryFilters(relevance=RelevanceFilters.RECENT,time=TimeFilters.MONTH,type=[TypeFilters.FULL_TIME,TypeFilters.INTERNSHIP],experience=[ExperienceLevelFilters.INTERNSHIP,ExperienceLevelFilters.MID_SENIOR],)))
公司过滤器
也可以使用LinkedIn上的上市公司工作网址按公司进行筛选。要找到此url,您必须:
- 使用您选择的帐户登录LinkedIn。在
- 转到你感兴趣的公司的LinkedIn页面(例如https://www.linkedin.com/company/google)。在
- 单击左菜单中的
jobs
。在
- 向下滚动并找到
See all jobs
或See jobs
按钮。在
- 右键单击并复制链接地址(或导航链接并从地址栏复制)。在
- 将链接地址粘贴到代码中,如下所示:
query=Query(options=QueryOptions(filters=QueryFilters(# Paste link belowcompany_jobs_url='https://www.linkedin.com/jobs/search/?f_C=1441%2C17876832%2C791962%2C2374003%2C18950635%2C16140%2C10440912&geoId=92000000',)))
测井
可以使用命名空间li:scraper
检索包记录器。默认级别是INFO
。
可以使用环境变量LOG_LEVEL
或在代码中更改记录器级别:
importlogging# Change root logger level (default is WARN)logging.basicConfig(level=logging.DEBUG)# Change package logger levellogging.getLogger('li:scraper').setLevel(logging.DEBUG)# Optional: change level to other loggerslogging.getLogger('urllib3').setLevel(logging.WARN)logging.getLogger('selenium').setLevel(logging.WARN)
许可证
- 项目
标签: