用于将职位发布抓取到.csv
文件的自动化工具。
JobFunnel 需要 Python 3.11 或更高版本。
pip install git+https://github.com/PaulMcInnis/JobFunnel.git
通过定期进行抓取和审查,您甚至可以消除最繁忙的就业市场的噪音。
您可以使用 YAML 配置文件或传递命令参数来搜索作业。
通过运行以下命令下载演示 settings.yaml:
wget https://git.io/JUWeP -O my_settings.yaml
笔记:
建议提供尽可能少的搜索关键字(即Python
、 AI
)。
JobFunnel 目前支持CANADA_ENGLISH
、 USA_ENGLISH
、 UK_ENGLISH
、 FRANCE_FRENCH
和GERMANY_GERMAN
区域设置。
使用您的设置 YAML 运行funnel
以使用来自可用提供商的作业填充您的主 CSV 文件:
funnel load -s my_settings.yaml
打开主 CSV 文件并更新每个作业的status
:
设置为interested
、 applied
、 interview
或offer
以反映您在工作中的进展。
设置为archive
、 rejected
或delete
以从此搜索中删除职位。您可以在block_list_file
中查看“阻止”的作业。
自动搜索
JobFunnel 可以通过 crontab 轻松实现自动化,每晚运行
有关详细信息,请参阅 crontab 文档。
编写自己的爬虫
如果您想为一个招聘网站编写抓取工具,欢迎您实施它,查看基本抓取工具以了解实施细节。
远程工作
通过设置搜索参数remoteness
来匹配您所需的级别(即FULLY_REMOTE
,绕过寻找远程工作的令人沮丧的用户体验。
添加对 X 语言/招聘网站的支持
JobFunnel 支持跨区域设置和域从同一招聘网站抓取职位。如果您有兴趣添加支持,您可能只需要定义会话标头和域字符串,请查看 Base Scraper 以了解进一步的实现细节。
封锁公司
通过将不需要的公司添加到 YAML 中的company_block_list
中或通过命令行将其作为-cbl
传递来过滤不需要的公司。
工作年龄过滤器
您可以通过配置max_listing_days
来配置已抓取列表的最长期限(以天为单位)。
在终端中查看作业
您可以在命令行中查看作业列表:
column -s, -t < master_list.csv | less -#2 -N -S
尊重的拖延
使用我们内置的延迟算法恭敬地抓取您的职位信息。
为了更好地了解如何配置延迟,请查看此 Jupyter Notebook,它通过代码和可视化逐步分解了算法。
恢复丢失的数据
JobFunnel 可以从所有历史抓取数据所在的cache_folder
重建主CSV:
funnel --recover
通过 CLI 运行
您只能使用 CLI 运行 JobFunnel,通过以下方式查看命令结构:
funnel inline -h
JobFunnel 无法解决验证码问题。如果在抓取时收到“ Unable to extract jobs from initial search result page:
错误。然后在浏览器上打开该网址并手动解决验证码。
对于想要在 JobFunnel 上工作的贡献者和开发人员,本节将指导您设置开发环境以及我们用来维护代码质量和一致性的工具。
首先,以开发人员模式安装 JobFunnel 。这将安装所有必要的依赖项,包括测试、linting 和格式化实用程序等开发工具。
要在开发者模式下安装 JobFunnel,请使用以下命令:
pip install -e ' .[dev] '
此命令不仅以可编辑状态安装包,而且还设置预提交挂钩以进行自动代码质量检查。
以下预提交挂钩配置为在您提交更改时自动运行,以确保代码遵循一致的样式和质量准则:
Black
:自动格式化Python代码以确保一致性。isort
:根据 Black 风格对导入进行排序和组织。Prettier
:格式化非 Python 文件,例如 YAML 和 JSON。Flake8
:检查 Python 代码是否违反样式指南。虽然在运行pip install -e '.[dev]'
时安装了预提交包,但您仍然需要通过运行以下命令来初始化挂钩:
pre-commit install
当您尝试提交时,预提交挂钩将自动运行。如果发现任何格式问题,挂钩将修复它们(对于 Black 和 isort),或警告您有关样式违规的问题(对于 Flake8)。这可确保所有提交的代码符合项目的质量标准。
您还可以随时使用以下命令手动运行预提交挂钩:
pre-commit run --all-files
这对于在提交之前检查整个代码库或作为更大的代码审查的一部分非常有用。在提交到存储库之前,请修复所有样式指南违规行为(或提供忽略的原因)。
我们使用pytest
来运行测试并确保代码的行为符合预期。每次运行测试时都会自动生成代码覆盖率。
要运行所有测试,请使用以下命令:
pytest
这将执行测试套件并自动生成代码覆盖率报告。
如果您想查看详细的代码覆盖率报告,您可以运行:
pytest --cov-report=term-missing
这将直接在终端输出中显示测试覆盖范围中遗漏的代码行。