공부하기싫어

최근에 또 허리를 다쳐서 계속 누워만있다가

추석 연휴인 오늘 옆에 소주한병 놓고 시작해보려고 한다.

 

오늘의 목표는

인스타그램 계정의 첫 페이지 사진 전부를 로컬 폴더로 크롤링 해오는 것이다.

한 3일간 서칭해봤지만 정확히 이 기능을 하는 스크립트는 없는것 같아서

여기저기서 코드를 끌어와야 할 것 같다.

 

 

 

  • 로그인

일단 로그인부터 쉽지가 않은데

인스타그램 계정이 아니라 페이스북으로 로그인을 해보려고 한다.

 

22.09.09 9:30pm 시작

 

페이스북 로그인을 하려고

https://github.com/SOMJANG/Instagram_Crawler/blob/main/instagram_crawler/utils.py

 

GitHub - SOMJANG/Instagram_Crawler: 인스타그램 크롤러 (Python, Selenium)

인스타그램 크롤러 (Python, Selenium). Contribute to SOMJANG/Instagram_Crawler development by creating an account on GitHub.

github.com

 

이분 깃허브를 참고해서 코드를 짜보는데

라이브러리가 업데이트되서그런가 안되는게 많아서

아래 블로그들을 통해서 코드를 수정했다.

 

 

 

https://bskyvision.com/entry/python-selenium-%ED%81%AC%EB%A1%A4%EB%A7%81-findelementbycssselector-%EB%8D%94-%EC%9D%B4%EC%83%81-%EC%82%AC%EC%9A%A9-%EB%B6%88%EA%B0%80

 

[python] selenium 크롤링 find_element_by_css_selector 더 이상 사용 불가

안녕하세요. 비스카이비전입니다. 불과 며칠 전까지 실행했었던 셀레니움 크롤링 코드를 오늘 새로운 환경에서 실행해보니 다음과 같은 에러 메시지가 나왔습니다. AttributeError: 'WebDriver' object ha

bskyvision.com

https://yeko90.tistory.com/entry/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%EA%B8%B0%EC%B4%88-executablepath-has-been-deprecated-please-pass-in-a-Service-object-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

 

[셀레니움 기초] executable_path has been deprecated, please pass in a Service object 에러 해결 방법

크롤링이 정상적으로 되는것같으나 아래와 같은 에러문이 뜨시나요? 이번 포스팅을 통해 문제를 해결해보도록 하겠습니다! 해당 에러는 selenium이 4.대 버전이 되면서 ‘기존 방식이 아닌 새로운

yeko90.tistory.com

 

셀레니움 라이브러리가 업데이트되면서 사용 방법이 좀 바뀐것 같다

크롬드라이브 패스 설정도 오류가 떠서 바꿔줬다

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from selenium import webdriver as wd
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import time
import re
 
 
 
user_id="ㅇㄹㅇㄹㅇ"
user_passwd="ㄴㅇㄴㅇㄴㅇ"
driver_path="D:\\DEV\\fansieve-background_maker\\web-fansieve-backgroundmaker\\chromedriver.exe"
 
instagram_id_name="username"
instagram_pw_name="password"
instagram_login_btn=".sqdOP.L3NKy.y3zKF     "
 
facebook_login_page_css=".sqdOP.L3NKy.y3zKF     "
facebook_login_page_css2=".sqdOP.yWX7d.y3zKF     "
facebook_id_form_name="email"
facebook_pw_form_name="pass"
facebook_login_btn_name="login"
 
login_option="facebook" # facebook or instagram
print(f"login start - option {login_option}")
login_url = "https://www.instagram.com/accounts/login/"
driver = wd.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(login_url)
time.sleep(10)
 
 
 
#login
def pagelogin(driver, user_id, user_passwd, login_option) :
    is_login_success=False
    
    if login_option == "facebook":
        is_facebook_btn_click = False
        try:
            print("try click facebook login button 1")
            facebook_login_btn = driver.find_element(By.CSS_SELECTOR, facebook_login_page_css)
            time.sleep(5)
            facebook_login_btn.click()
            is_facebook_btn_click = True
            is_login_success = True
        except:
            print("click facebook login button 1 fail")
            is_facebook_btn_click = False
            is_login_success = False 
        time.sleep(10)
 
        if not is_facebook_btn_click:
            try:
                print("try click facebook login button 2")
                facebook_login_btn = driver.find_element(By.CSS_SELECTOR, facebook_login_page_css2)
                time.sleep(5)
                facebook_login_btn.click()
                is_facebook_btn_click = True
                print("facebook login btn clicked")
                is_login_success = True
            except:
                print("click facebook login button 2 fail")
                is_login_success = False
        time.sleep(10)
 
        if is_facebook_btn_click:
                id_input_form = driver.find_element(By.NAME, facebook_id_form_name)
                time.sleep(5)
                id_input_form.send_keys(user_id)
                
                time.sleep(7)
                
                pw_input_form = driver.find_element(By.NAME, facebook_pw_form_name)
                time.sleep(5)
                pw_input_form.send_keys(user_passwd)
                
                time.sleep(7)
                
                login_btn = driver.find_element(By.NAME, facebook_login_btn_name)
                time.sleep(5)
                login_btn.click()
                print("login success")
        time.sleep(10)
 
#일단 로그인만
pagelogin(driver, user_id, user_passwd, login_option)
cs

 

현재시간 22.09.10 am 1:23 ㅅㅂ ㅋㅋ

이거하려고 4시간을 태웠네 아

 

4시간이면 마크 주커버그가 하버드 db 해킹해서 페이스메쉬 만들 시간인데

ㅈ같네 진짜 ㅋㅋ

 

https://youtu.be/9oMGOrJAftU