2020. 7. 16. 11:07ㆍ데이터 분석/파이썬
위의 그림처럼 해시태그 관광을 찾으면 주소가 아래와 같이 나옵니다.
https://www.instagram.com/explore/tags/관광/? hl=ko
#관광 해시태그 • Instagram 사진 및 동영상
www.instagram.com
따라서 특정 검색어에 따른 주소를 만들기 위해 주소 코드를 만들어 줍니다.
def insta_searching(word):
url = "https://www.instagram.com/explore/tags/" + word
return url
import time
그 후, 필요한 패키지를 불러오고 설치되어있는 크롬 드라이버를 연결해 줍니다.
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re
# 크롬 브라우저 열기
driver = webdriver.Chrome('C:/chromedriver_win32 (1)/chromedriver.exe')
driver.get('https://www.instargram.com')
time.sleep(2)
인스타그램을 크롤링하기 위해서는 인스타그램 로그인 코드를 만들어 줘야 합니다.
'본인 계정 이메일/아이디' , '비밀번호' 란에는 각자의 계정 정보를 입력해 주시면 정상적으로 로그인됩니다.
email = '본인 계정 이메일/아이디'
input_id = driver.find_elements_by_css_selector('input._2hvTZ.pexuQ.zyHYP')[0]
input_id.clear()
input_id.send_keys(email)
password = '비밀번호'
input_pw = driver.find_elements_by_css_selector('input._2hvTZ.pexuQ.zyHYP')[1]
input_pw.clear()
input_pw.send_keys(password)
input_pw.submit()
selenium을 통해 url에 접속하기 위해서 위에서 만들어 놓은 코드를 활용하여
해당 페이지로 넘어가 정보를 들고 옵니다.
word = "관광"
url = insta_searching(word)
driver.get(url)
time.sleep()을 사용하는 이유로는 정보를 들고 오기까지의 일정 시간을 정해주는 것입니다.
def select_first(driver):
first = driver.find_element_by_css_selector("div._9AhH0")
first.click()
time.sleep(3)
select_first(driver)
인스타그램 페이지에서 F12버튼을 눌러 path를 확인하고 본문 내용, 해시태그, 작성일자, 좋아요 수 , 위치 정보를 들고 와서 저장합니다.
import re
from bs4 import BeautifulSoup
def get_content(driver):
html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
# 본문 내용
try:
content = soup.select('div.C4VMK > span')[0].text
except:
content = ' '
# 해시태그
tags = re.findall(r'#[^\s#,\\]+', content)
# 작성일자
date = soup.select('time._1o9PC.Nzb55')[0]['datetime'][:10]
# 좋아요
try:
like = soup.select('div.Nm9Fw > button')[0].text[4:-1]
except:
like = 0
# 위치
try:
place = soup.select('div.M30cS')[0].text
except:
place = ''
data = [content, date, like, place, tags]
return data
get_content(driver)
한 페이지에서 크롤링하고 다음 페이지로 넘어가는 코드를 작성해 줍니다.
def move_next(driver):
right = driver.find_element_by_css_selector ('a.coreSpriteRightPaginationArrow')
right.click()
time.sleep(3)
move_next(driver)
이제 본격적으로 크롤링을 합니다.
word = "경북여행"
url = insta_searching(word)
driver.get(url)
time.sleep(3)
select_first(driver)
results = [ ]
target = 500
for i in range(target):
try:
data = get_content(driver)
results.append(data)
move_next(driver)
except:
time.sleep(2)
move_next(driver)
print(results[:2])
driver.get(url)을 통해 검색 페이지에 접속하고, target = 함수를 활용해 크롤링할 게시글 수를 지정합니다.
크롤링이 완료되었으면 이 결과를 dataframe형식으로 저장합니다.
import pandas as pd
results_df = pd.DataFrame(results)
results_df.columns = ['content','data','like','place','tags']
results_df.to_excel('C:/Users/POASISTOUR/Desktop/경북여행.xlsx')
< 위 글은 "직장인을 위한 데이터 분석 실무"를 참고하였습니다 >
'데이터 분석 > 파이썬' 카테고리의 다른 글
1-4. 시각화 (0) | 2020.07.16 |
---|---|
1-3. 해시태그 정리하기 (1) | 2020.07.16 |
1-2. 중복데이터 제거 및 파일 합치기 (0) | 2020.07.16 |
1.경상북도 관광 해시태그 분석 (0) | 2020.07.16 |