1seok2

add select followings, uploading to firebase

...@@ -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
......