일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 머신러닝
- map
- AI
- 크롤러
- Computer Vision
- 자연어처리
- 선형회귀
- filtering
- 크롤링
- 인공지능
- 지정헌혈
- 모델
- RNN
- 선형대수학
- pytorch
- 코딩애플
- Regression
- 데이터분석
- 파이썬
- 앱개발
- 회귀
- 피플
- 유데미
- mnist
- 42서울
- 플러터
- 딥러닝
- 42경산
- Flutter
- CV
- Today
- Total
David의 개발 이야기!
인스타그램 자동 좋아요 누르기 프로그램 만들기! 본문
인스타그램에 자동으로 로그인해서 특정 키워드에 대한 모든 게시물에 "좋아요"를 누르는 프로그램을 만들어보았다!
[ 키워드를 입력하고 인스타그램에 로그인 하는 부분 ]
hash_tag = input("해쉬태그 입력 >>> ")
browser = webdriver.Chrome("./chromedriver")
url = browser.get("https://www.instagram.com/?hl=ko")
time.sleep(3)
id = browser.find_element_by_name("username") #name 속성값으로 가져오는 방법! #find_element_by_css_sellector써도 무관!
id.send_keys("아이디 입력")
pw = browser.find_element_by_name("password")
pw.send_keys("비밀번호 입력")
browser.find_element_by_css_selector("div.qF0y9.Igw0E.IwRSH.eGOV_._4EzTm").click() #공백은 지워주고 중간의 공백들은 . 으로 바꾸어준다!
time.sleep(7)
url = "https://www.instagram.com/explore/tags/{}".format(hash_tag)
browser.get(url)
time.sleep(7)
browser.find_element_by_name -> 태그 검색
send.keys() -> 입력
click() -> 클릭
[ 첫번째 사진 클릭하는 코드 ]
browser.find_element_by_css_selector("div._9AhH0").click()
time.sleep(7)
[ 자동으로 좋아요 누르게 동작시키는 코드 ]
while True:
like = browser.find_element_by_css_selector("section.ltpMr.Slqrh span > svg._8-yf5")
value = like.get_attribute("aria-label") #주의! 꼭 알아두기!
next = browser.find_element_by_css_selector("div.l8mY4.feth3 button.wpO6b")
if value == "좋아요":
like.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
next.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
elif value == "좋아요 취소":
next.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
인스타그램에서 좋아요(하트)가 눌려져있으면 넘어가고, 안눌러져있으면 누르도록 만들기 위해
get_attribute("속성명") -> 속성값 반환! 를 통해, 속성값을 받아 IF문으로 만들었다.
중요한 포인트중 하나는, 인스타그램 좋아요 누르거나 어떤 행동을 규칙적이게 만들면 차단당할 우려가 있어,
random.randint(a,b) -> a,b사이의 정수 반환
random.random(()) -> 0,1사이의 소수 반환
을 통해 무작위로 time.sleep()해주었다!
[ 인스타그램 자동 좋아요 + 해당 글과 닉네임 엑셀저장 코드 ]
from selenium import webdriver
import time
import random
import os
import openpyxl
import unicodedata #엑셀저장시, 자모음 분리되는 문제를 해결하기 위해 필요함!
if not os.path.exists("./인스타그램.xlsx"):
book = openpyxl.Workbook()
book.save("./인스타그램.xlsx")
book = openpyxl.load_workbook("./인스타그램.xlsx")
#sheet = book["Sheet1"]
sheet = book.active #열리는 그 시트를 쓰겠다
hash_tag = input("해쉬태그 입력 >>> ")
browser = webdriver.Chrome("./chromedriver")
url = browser.get("https://www.instagram.com/?hl=ko")
time.sleep(3)
id = browser.find_element_by_name("username") #name 속성값으로 가져오는 방법! #find_element_by_css_sellector써도 무관!
id.send_keys("*****************")
pw = browser.find_element_by_name("password")
pw.send_keys("++++++++++++++++++!")
browser.find_element_by_css_selector("div.qF0y9.Igw0E.IwRSH.eGOV_._4EzTm").click() #공백은 지워주고 중간의 공백들은 . 으로 바꾸어준다!
time.sleep(7)
url = "https://www.instagram.com/explore/tags/{}".format(hash_tag)
browser.get(url)
time.sleep(7)
#첫번째 사진 클릭하기
browser.find_element_by_css_selector("div._9AhH0").click()
time.sleep(7)
#자동 좋아요 동작시키기
row_num = 1
while True:
like = browser.find_element_by_css_selector("section.ltpMr.Slqrh span > svg._8-yf5")
value = like.get_attribute("aria-label") #주의! 꼭 알아두기!
next = browser.find_element_by_css_selector("div.l8mY4.feth3 button.wpO6b")
### 크롤링 ###
nick_name = browser.find_element_by_css_selector("a.sqdOP.yWX7d._8A5w5.ZIAjV") #find_element_by_css_selector 는 가장위에 있는 것 반환함
content = browser.find_element_by_css_selector("div.C4VMK > span")
content_normalize = unicodedata.normalize("NFC", content.text) #한글의 자모음 분리해결!
sheet.cell(row= row_num, column=1).value = nick_name.text #.value를 써야 시트에 글을 쓸 수 있는 상태로 변함!
sheet.cell(row= row_num, column=2).value = content.text #.text를 써야 text만 나옴
row_num += 1
book.save("./인스타그램.xlsx")
if value == "좋아요":
like.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
next.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
elif value == "좋아요 취소":
next.click()
time.sleep(random.randint(2,5) + random.random()) #불규칙하게 넘기는 것을 만들기 위함! 인스타그램이 셀레니움은 차단함!
여기서 포인트는, 1. 엑셀파일이 있는 지 없는지 유무를 검사하고, 있으면 거기에, 없으면 새로 만들어 저장하는 부분과, 2. 한글 자모음이 깨지는 문제를 해결하는 방법이다!
1번과 같은 것은, 아래와 같이 해결한다!
if not os.path.exists("./인스타그램.xlsx"):
book = openpyxl.Workbook()
book.save("./인스타그램.xlsx")
book = openpyxl.load_workbook("./인스타그램.xlsx")
#sheet = book["Sheet1"]
sheet = book.active #열리는 그 시트를 쓰겠다
2번은, 다음과 같이 해결한다!
import unicodedata #엑셀저장시, 자모음 분리되는 문제를 해결하기 위해 필요함!
### 크롤링 ###
nick_name = browser.find_element_by_css_selector("a.sqdOP.yWX7d._8A5w5.ZIAjV") #find_element_by_css_selector 는 가장위에 있는 것 반환함
content = browser.find_element_by_css_selector("div.C4VMK > span")
content_normalize = unicodedata.normalize("NFC", content.text) #한글의 자모음 분리해결!
sheet.cell(row= row_num, column=1).value = nick_name.text #.value를 써야 시트에 글을 쓸 수 있는 상태로 변함!
sheet.cell(row= row_num, column=2).value = content.text #.text를 써야 text만 나옴
row_num += 1
book.save("./인스타그램.xlsx")
unicodedata를 불러오고, content.text를 normalize한다!
.text를 붙여한다는 것과, 엑셀에 저장할때, .value를 붙여야한다는 점을 유의하자!
'크롤링 공부' 카테고리의 다른 글
웹 크롤러 개념 익히기[1] - 네이버 주식 현재가 크롤링 예제 (0) | 2023.05.02 |
---|---|
[ iframe 개념 이해하기 ] 다음카페 자동으로 글 게시하는 프로그램 만들기! (4) | 2021.12.16 |
네이버 클로바 음성인식 API 활용 실습! (0) | 2021.12.15 |
json 에서 dictionary로 변환하는 방법! (0) | 2021.12.15 |
파파고API를 활용한 번역프로그램 만들기! (0) | 2021.12.15 |