Showing
3 changed files
with
42 additions
and
18 deletions
... | @@ -16,3 +16,13 @@ config = { | ... | @@ -16,3 +16,13 @@ config = { |
16 | firebase = pyrebase.initialize_app(config) | 16 | firebase = pyrebase.initialize_app(config) |
17 | 17 | ||
18 | db = firebase.database() | 18 | db = firebase.database() |
19 | + | ||
20 | +def update_data(user_insta_id ,followers, followings): | ||
21 | + insta_id = user_insta_id.replace('_','').replace('.','') | ||
22 | + | ||
23 | + data = { | ||
24 | + "followings" : followings, | ||
25 | + "followers" : followers | ||
26 | + } | ||
27 | + | ||
28 | + db.child("insta").child(insta_id).update(data) | ... | ... |
... | @@ -4,6 +4,24 @@ from selenium import webdriver | ... | @@ -4,6 +4,24 @@ from selenium import webdriver |
4 | from selenium.webdriver.common.keys import Keys | 4 | from selenium.webdriver.common.keys import Keys |
5 | from config.admin import ID, PW | 5 | from config.admin import ID, PW |
6 | from config.URLs import INSTAGRAM_URL | 6 | from config.URLs import INSTAGRAM_URL |
7 | +from config.firebase import update_data | ||
8 | + | ||
9 | +def check_people(driver, type): | ||
10 | + result = [] | ||
11 | + | ||
12 | + navigations = driver.find_elements_by_class_name('-nal3') | ||
13 | + | ||
14 | + if type == "followers": | ||
15 | + navigations[1].click() | ||
16 | + elif type == "following": | ||
17 | + navigations[2].click() | ||
18 | + time.sleep(1) | ||
19 | + | ||
20 | + elem = driver.find_elements_by_css_selector('.Jv7Aj ._0imsa') | ||
21 | + for obj in elem: | ||
22 | + result.append(obj.text) | ||
23 | + | ||
24 | + return result | ||
7 | 25 | ||
8 | 26 | ||
9 | def login(driver): | 27 | def login(driver): |
... | @@ -14,10 +32,19 @@ def login(driver): | ... | @@ -14,10 +32,19 @@ def login(driver): |
14 | elem[1].send_keys(Keys.RETURN) | 32 | elem[1].send_keys(Keys.RETURN) |
15 | time.sleep(1) | 33 | time.sleep(1) |
16 | 34 | ||
35 | + | ||
17 | def get_list(insta_id, driver): | 36 | def get_list(insta_id, driver): |
18 | - navigations = driver.find_elements_by_class_name('-nal3') | 37 | + # check followers |
38 | + followers_list = check_people(driver, "followers") | ||
39 | + | ||
40 | + # close followers | ||
41 | + driver.find_element_by_css_selector('.WaOAr .wpO6b').click() | ||
42 | + time.sleep(1) | ||
19 | 43 | ||
20 | - navigations[1].click() | 44 | + # check followings |
45 | + following_list = check_people(driver, "following") | ||
46 | + | ||
47 | + update_data(insta_id, followers_list, following_list) | ||
21 | 48 | ||
22 | 49 | ||
23 | def crawler_instagram(insta_id): | 50 | def crawler_instagram(insta_id): |
... | @@ -43,13 +70,9 @@ def crawler_instagram(insta_id): | ... | @@ -43,13 +70,9 @@ def crawler_instagram(insta_id): |
43 | print('private!!') | 70 | print('private!!') |
44 | # 공개 계정인 경우 | 71 | # 공개 계정인 경우 |
45 | else: | 72 | else: |
46 | - nav = get_list(insta_id, driver) | 73 | + get_list(insta_id, driver) |
47 | - time.sleep(2) | ||
48 | - | ||
49 | - | ||
50 | - # driver.close() | ||
51 | 74 | ||
52 | - return nav | 75 | + driver.close() |
53 | 76 | ||
54 | 77 | ||
55 | if __name__ == "__main__": | 78 | if __name__ == "__main__": | ... | ... |
1 | import os | 1 | import os |
2 | from flask import Flask, render_template, request | 2 | from flask import Flask, render_template, request |
3 | 3 | ||
4 | -from config.firebase import db | ||
5 | from crawler.crawler_instagram import crawler_instagram | 4 | from crawler.crawler_instagram import crawler_instagram |
6 | 5 | ||
7 | -# data = { | ||
8 | -# "age": 24, | ||
9 | -# "name": "choi", | ||
10 | -# "date": "2020.12.03" | ||
11 | -# } | ||
12 | - | ||
13 | -# db.child("name").child("name").update(data) | ||
14 | - | ||
15 | app = Flask(__name__) | 6 | app = Flask(__name__) |
16 | 7 | ||
17 | 8 | ||
... | @@ -25,7 +16,7 @@ def home(): | ... | @@ -25,7 +16,7 @@ def home(): |
25 | return render_template('index.html') | 16 | return render_template('index.html') |
26 | 17 | ||
27 | 18 | ||
28 | -@app.route("/check", methods=["POST"]) | 19 | +@app.route("/update", methods=["POST"]) |
29 | def check(): | 20 | def check(): |
30 | insta_id = request.form['insta_id'] | 21 | insta_id = request.form['insta_id'] |
31 | 22 | ... | ... |
-
Please register or login to post a comment