티스토리 뷰
Language/Python
파이썬 셀레늄(selenium) webdriver자동 설치, 인스타 접속, 기다리기, 스크롤 내리기
KyeongRok Kim 2019. 4. 27. 04:36webdriver자동 설치
import chromedriver_autoinstaller
chromedriver_autoinstaller.install()
위 방법을 이용하면 웹드라이버를 매번 다운로드 하지 않아도 된다. mac, windows, linux다 됩니다.
pip install chromedriver_autoinstaller 은 해주어야 합니다.
webdriver로 chrome열기
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)
인스타 접속하기
import chromedriver_autoinstaller
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
chromedriver_autoinstaller.install()
chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)
url = 'https://www.instagram.com/'
driver.get(url)
time.sleep(2)
driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[1]/div/label/input').send_keys('oceanfog1@gmail.com')
driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[2]/div/label/input').send_keys('')
위 코드를 실행하면 인스타그램 접속하고 id, pw까지 입력 합니다.
pip install selenium
pip install chromedriver_autoinstaller
위 두가지 라이브러리를 설치 해주어야 돌아갑니다.
기다리기
셀레늄을 쓰는 이유는 http request를 보내면 데이터가 오기전에 크롤이 끝나버리는 경우가 있기 때문입니다.
그래서 원하는 데이터는 오지 않고 껍데기만 오는 경우가 많습니다.
원하는 데이터가 로딩될때까지 기다렸다가 크롤링 하기 위해서 셀레늄을 씁니다.
다음 코드는 인스타그램에 '발레'라는 해쉬태그를 검색한 페이지를 크롤하는 코드입니다.
import os
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# rootPath = os.path.split(os.environ['VIRTUAL_ENV'])[0]
rootPath = ".."
chrome_options = Options()
# chrome_options.add_argument("--headless")
driver = webdriver.Chrome(
executable_path="{}/chrome/chromedriver".format(rootPath),
options=chrome_options
)
url = "https://instagram.com/explore/tags/발레"
driver.get(url)
wait = WebDriverWait(driver, 2)
wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".EZdmt"))
)
pageString = driver.page_source
print(pageString)
driver.close()
wait = WebDriverWait(driver, 2)
wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".EZdmt"))
위 로직이 특정 css 셀렉터가 나올때까지 기다리는 코드입니다.
이 코드를 쓰려면 여러가지 라이브러리가 필요합니다.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait, EC, By 이렇게 세가지가 있어야 합니다.
스크롤 내리기
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
728x90
'Language > Python' 카테고리의 다른 글
제자반 자리배치 프로그램 (0) | 2019.09.23 |
---|---|
setuptools.find_packages()이용해 패키지 찾기 (0) | 2019.09.10 |
python selinium 크롤 할 때 랜덤 (0) | 2019.04.11 |
python pandas사용 방법 - csv읽어오기 to 그루핑(group) sum하기 (0) | 2018.11.14 |
이진탐색 알고리즘 (0) | 2018.11.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker container
- vim
- docker container tissue
- 도커티슈박스
- 도커티슈케이스
- Linux
- 도커각티슈박스
- 도커각티슈케이스
- 2017 티스토리 결산
- 이직
- Sh
- docker container case
- 개발자
- 싱가폴
- docker container whale
- shellscript
- docker container tissue box
- 도커컨테이너
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함