Skip to main content

Introduction

Job boards (like LinkedIn) can be a good source for finding job openings. Unfortunately the search results cannot always be filtered to a usable degree. Exfill (short for extraction) lets users scrape and parse jobs with more flexability provided by the default search.

Currently only LinkedIn is supported.

Project Structure

Directories:

  • src/exfill/parsers - Contains parser(s)
  • src/exfill/scrapers - Contains scraper(s)
  • src/exfill/support
  • data/html
    • Not in source control
    • Contains HTML elements for a specific job posting
    • Populated by a scraper
  • data/csv
    • Not in source control
    • Contains parsed information in a csv table
    • Populated by a parser
    • Also contains an error table
  • logs
    • Not in source control
    • Contains logs created during execution

creds.json File

Syntax should be as follows:

{
    "linkedin": {
        "username": "jay-law@protonmail.com",
        "password": "password1"
    }
}

Usage

There are two actions required to generate usable data:

First is the scraping action. When called, a browser will open and perform a job query on the specified site. Each posting will be exported to the data/html directory.

The second action is parsing. Each job posting in data/html will be opened and analyzed. Once all postings have been analyzed a single CSV file will be exported to data/csv.

The csv file provides a high-level overview of all the jobs returned during the query. When imported to a spreadsheet, users can filter on fields not present in the original search options. Examples include sorting by companies or excluding certain industries.

Add Creds File

This is required for all usage.

# Install with git
$ git clone git@github.com:jay-law/job-scraper.git

# Create and populate creds.json.  Bash only:
cat <<EOF > creds.json
{
    "linkedin": {
        "username": "jay-law@protonmail.com",
        "password": "password1"
    }
}
EOF

Use as Code

# Install with git
$ git clone git@github.com:jay-law/job-scraper.git

# Activate virtual env
$ poetry shell

# Install dependencies
$ poetry install

# Ensure creds.json exists (see above)

# Execute - Scrape linkedin
$ python3 exfill/extractor.py linkedin scrape

# Execute - Parse linkedin
$ python3 exfill/extractor.py linkedin parse

Use as Module

# Install
$ poetry add exfill

# Ensure creds.json exists (see above)

# Execute - Scrape linkedin
$ python3 -m exfill.extractor linkedin scrape

# Execute - Parse linkedin
$ python3 -m exfill.extractor linkedin parse

Roadmap

  • Write unit tests
  • Improve secret handling
  • Add packaging
  • Move paths to config file
  • Move keyword logic
  • Set/include default config.ini for users installing with PIP
  • Add CICD
  • Automate versioning
  • Add formatter (black module)
  • Add static type checking (mypy module)
  • Add import sorter (isort module)
  • Add linter (flake8 module)
  • Update string interpolation from %f to f-string
  • Replace sys.exit calls with exceptions
  • Update how the config object is accessed
  • Migrate to poetry for virtual env, building, and publishing
  • Replace os.path usage with pathlib
  • Replace pandas export with csv export
  • Replace unittest with pytest

Release files for exfill 0.1.29

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exfill 0.1.29
File Size Uploaded
exfill-0.1.29.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for exfill 0.1.29
File Interpreter ABI Platform
exfill-0.1.29-py3-none-any.whl Python 3 none any Details

Total release size: 5.4 MB

Release files / exfill-0.1.29.tar.gz

Download URL exfill-0.1.29.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
c581f3a656aa92a75a89d9677a9999da842bbaf86bc212a157522ff22beb57f2
BLAKE2b-256 checksum
How to use checksums
b916cb6151066e47b02e601f54eca34e309f5866622bc9cfb7f5ddcbe47e7fd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / exfill-0.1.29-py3-none-any.whl

Download URL exfill-0.1.29-py3-none-any.whl
Size 2.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a6ca5e0ca4b73896ea06621a2f7dbc44e34233479f4e52194d62ea49b2321a55
BLAKE2b-256 checksum
How to use checksums
363654c69c84909c4e1d8e0d848f9cd6952a3e043a4e159115e3498f8e85d09e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.1.29 This release

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.10

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.9

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page