1seok2

add login, select followers

...@@ -4,3 +4,7 @@ node_modules ...@@ -4,3 +4,7 @@ node_modules
4 chromedriver 4 chromedriver
5 5
6 key.py 6 key.py
7 +admin.py
8 +
9 +venv
10 +venv3
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -7,8 +7,11 @@ ...@@ -7,8 +7,11 @@
7 </component> 7 </component>
8 <component name="NewModuleRootManager" inherit-compiler-output="true"> 8 <component name="NewModuleRootManager" inherit-compiler-output="true">
9 <exclude-output /> 9 <exclude-output />
10 - <content url="file://$MODULE_DIR$" /> 10 + <content url="file://$MODULE_DIR$">
11 - <orderEntry type="inheritedJdk" /> 11 + <excludeFolder url="file://$MODULE_DIR$/venv" />
12 + <excludeFolder url="file://$MODULE_DIR$/venv3" />
13 + </content>
14 + <orderEntry type="jdk" jdkName="Python 3.8 (venv3)" jdkType="Python SDK" />
12 <orderEntry type="sourceFolder" forTests="false" /> 15 <orderEntry type="sourceFolder" forTests="false" />
13 </component> 16 </component>
14 </module> 17 </module>
...\ No newline at end of file ...\ No newline at end of file
......
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 - <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK"> 3 + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (venv3)" project-jdk-type="Python SDK" />
4 - <output url="file://$PROJECT_DIR$/out" />
5 - </component>
6 </project> 4 </project>
...\ No newline at end of file ...\ No newline at end of file
......
1 +INSTAGRAM_URL="https://instagram.com"
...\ No newline at end of file ...\ No newline at end of file
File mode changed
1 +import time
1 import selenium 2 import selenium
2 from selenium import webdriver 3 from selenium import webdriver
4 +from selenium.webdriver.common.keys import Keys
5 +from config.admin import ID, PW
6 +from config.URLs import INSTAGRAM_URL
3 7
4 -BASE_URL = "https://instagram.com" 8 +
9 +def login(driver):
10 + elem = driver.find_elements_by_css_selector('._9GP1n .f0n8F ._2hvTZ')
11 + elem[0].send_keys(ID)
12 + elem[1].send_keys(PW)
13 +
14 + elem[1].send_keys(Keys.RETURN)
15 + time.sleep(1)
16 +
17 +def get_list(insta_id, driver):
18 + navigations = driver.find_elements_by_class_name('-nal3')
19 +
20 + navigations[1].click()
5 21
6 22
7 def crawler_instagram(insta_id): 23 def crawler_instagram(insta_id):
8 driver = webdriver.Chrome(executable_path='./chromedriver') 24 driver = webdriver.Chrome(executable_path='./chromedriver')
25 + driver.get(url=INSTAGRAM_URL)
26 + time.sleep(4)
27 +
28 + login(driver)
29 + time.sleep(5)
30 +
31 + url="%s/%s"%(INSTAGRAM_URL, insta_id)
32 + driver.get(url=url)
33 + time.sleep(2)
34 +
35 + try:
36 + isPrivate = driver.find_element_by_class_name('rkEop').text
37 + except Exception as e:
38 + isPrivate = ""
39 + pass
40 +
41 + # 비공개 계정인 경우
42 + if isPrivate:
43 + print('private!!')
44 + # 공개 계정인 경우
45 + else:
46 + nav = get_list(insta_id, driver)
47 + time.sleep(2)
9 48
10 - URL = "%s/%s" % (BASE_URL, insta_id)
11 - driver.get(url=URL)
12 49
13 - sleep(10) 50 + # driver.close()
14 51
15 - driver.close() 52 + return nav
16 53
17 54
18 if __name__ == "__main__": 55 if __name__ == "__main__":
......
1 import os 1 import os
2 -from config.firebase import db
3 from flask import Flask, render_template, request 2 from flask import Flask, render_template, request
4 3
4 +from config.firebase import db
5 +from crawler.crawler_instagram import crawler_instagram
6 +
5 # data = { 7 # data = {
6 # "age": 24, 8 # "age": 24,
7 # "name": "choi", 9 # "name": "choi",
...@@ -25,8 +27,9 @@ def home(): ...@@ -25,8 +27,9 @@ def home():
25 27
26 @app.route("/check", methods=["POST"]) 28 @app.route("/check", methods=["POST"])
27 def check(): 29 def check():
28 - value = request.form['insta_id'] 30 + insta_id = request.form['insta_id']
29 - return value 31 +
32 + crawler_instagram(insta_id)
30 33
31 34
32 if __name__ == "__main__": 35 if __name__ == "__main__":
......