An asynchronous LinkedIn job scraping tool built with Python and Playwright that automates job listing extraction while handling authentication and session management.
-
🔐 Smart Authentication
- Cookie-based session persistence
- Automatic login handling when cookies expire
- Secure credential management
-
🔄 Dynamic Content Handling
- Automated page scrolling
- Concurrent batch processing
- Waits for dynamic content loading
-
📊 Comprehensive Data Extraction
- Job titles and links
- Company information and logos
- Location data
- Application insights
- Easy Apply status
- Job posting metadata
-
🛠 Robust Architecture
- Detailed logging system
- Error handling and recovery
- Configurable batch processing
- Clean async/await implementation
# Clone the repository
git clone https://github.com/yourusername/linkedin-job-scraper.git
cd linkedin-job-scraper
# Install dependencies
pip install -r requirements.txt
# Install Playwright browsers
playwright installfrom linkedin_jobs import LinkedInJobScraper
import asyncio
async def main():
job_url = "your-linkedin-job-search-url"
scraper = LinkedInJobScraper()
await scraper.scrape_jobs(job_url)
if __name__ == "__main__":
asyncio.run(main())Add your LinkedIn credentials in the script or use environment variables:
# Using environment variables (recommended)
import os
EMAIL = os.getenv('LINKEDIN_EMAIL')
PASSWORD = os.getenv('LINKEDIN_PASSWORD')Job 1:
============================================================
Title: Software Engineer
Company: Example Corp
Location: San Francisco, CA
Insight: Actively hiring
Status: Posted 2 days ago
Application: Easy Apply
Job Link: https://linkedin.com/jobs/view/...
Company Logo: https://media.linkedin.com/...
============================================================
-
Data Storage
- Database integration
- Export to various formats (CSV, JSON)
- Historical data tracking
-
Enhanced Features
- Salary information extraction
- Company details scraping
- Job description analysis
- Keyword filtering
-
Automation
- Scheduled scraping
- Email notifications
- Application automation
-
UI/UX
- Web interface
- Real-time monitoring
- Custom search filters
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is for educational purposes only. Make sure to comply with LinkedIn's terms of service and robot.txt policies when using this scraper.
