-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
68 lines (58 loc) · 2.09 KB
/
app.py
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import os
from datetime import datetime
from dotenv import load_dotenv
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from tinydb import TinyDB
from tqdm import tqdm
from webdriver_manager.firefox import GeckoDriverManager
# init
load_dotenv()
db = TinyDB("./db.json")
options = Options()
options.headless = True
driver = webdriver.Firefox(
options=options, service=Service(GeckoDriverManager().install())
)
# login to freelance info
driver.get("https://www.freelance-info.fr/login-page.php")
username_elem = driver.find_element(by=By.ID, value="_username")
password_elem = driver.find_element(by=By.ID, value="_password")
username_elem.clear()
password_elem.clear()
username_elem.send_keys(os.getenv("USERNAME")) # email freelance-info
password_elem.send_keys(os.getenv("PASSWORD")) # mot de passe freelance-info
password_elem.send_keys(Keys.RETURN)
list_keywords = os.getenv("KEYWORDS_SEARCH").split(",")
current_date = datetime.now().strftime("%Y/%m/%d-%H:%M:%S")
for keyword in tqdm(list_keywords):
print(keyword)
driver.get("https://www.freelance-info.fr/missions?keywords=" + keyword)
driver.find_element(by=By.CSS_SELECTOR, value="button.btn:nth-child(2)").click()
stats_region = driver.find_elements(
by=By.CSS_SELECTOR, value="#regiondropdown > optgroup:nth-child(2)"
)
tmp_disct_region_nb = {}
for elem in stats_region[0].text.split("\n"):
region = elem.split("[")[0]
nb = elem.split("[")[1].split("]")[0]
tmp_disct_region_nb[region] = int(nb)
print(region, nb)
print(tmp_disct_region_nb, stats_region)
db.insert(
{
"date": current_date,
"techno": keyword,
"stats": tmp_disct_region_nb,
"total": sum(
[
tmp_disct_region_nb[value]
for (key, value) in enumerate(tmp_disct_region_nb)
]
),
}
)
driver.close()