File size: 1,078 Bytes
a5aa293
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import json
import os
from apify_client import ApifyClient
from dotenv import load_dotenv

load_dotenv(override=True)

CONFIG_PATH = "config.json"
OUTPUT_PATH = "data/linkedin.json"


def fetch_linkedin_profile(linkedin_url: str, actor_id: str) -> list:
    client = ApifyClient(os.getenv("APIFY_TOKEN"))
    run = client.actor(actor_id).call(run_input={
        "queries": [linkedin_url],
        "profileScraperMode": "Profile details no email ($4 per 1k)",
    })
    return list(client.dataset(run["defaultDatasetId"]).iterate_items())


def main():
    with open(CONFIG_PATH, "r", encoding="utf-8") as f:
        config = json.load(f)

    linkedin_url = config["linkedin_url"]
    actor_id = config["apify_actor_id"]

    print(f"Scraping {linkedin_url} via Apify actor {actor_id} ...")
    profiles = fetch_linkedin_profile(linkedin_url, actor_id)

    with open(OUTPUT_PATH, "w", encoding="utf-8") as f:
        json.dump(profiles, f, indent=2, ensure_ascii=False)

    print(f"Saved {len(profiles)} profile(s) to {OUTPUT_PATH}")


if __name__ == "__main__":
    main()