데분프_0428

allzeroyou·2022년 4월 28일
0

커피빈 크롤링 오류
href=# => 화면 상단으로 올리라는 의미
클릭할 수 없는 객체로 오류 발생.

강남구 선택 => li 정보가 있는 상태임.

명시적인 ~ : 관심이 있는 태그가 있을 때까지 기다리겠다

갱신이되지않았음에도 미리 읽어서 정보를 가져오기에, 갱신될 정보가 아니라서 오류 발생.

=> 셀레니움을 사용하지 않고 스크래피를 사용하면 될 듯.
동기식 방식임.

집에서 라면을 끓이고 청소를 하다가 전화를 해야함.

비동기식 방식
라면을 다 끓이고, 청소를 다 하고, 통화를 할 수 있어야.

쓰레드(thread)
동시에 여러 프로그램을 돌린다.

강남구, 강북구 등에 대한 쓰레드를 동시에 돌림.

없었던 걸 찾는 거라 기다렸다가 나타날때 크롤링 가능.

동적 웹 페이지 크롤링 기반으로 매크로 투표 티켓팅도 가능.
사람이 누른데 시간이 부족하기 때문에 자동화 프로그램도 작성도 가능.

슈도코드를 작성후 코딩을 하는 것이 일반적.
시간이 지나면 왜 이렇게 짰는지 이해가 잘 안감
자세하고 구체적으로 주석을 다는 습관들이기

구글 이미지 크롤링

스크롤을 내릴 때마다 url이 바뀜

import time
import urllib

from selenium import webdriver
driver = webdriver.Chrome('../chromedriver/chromedriver.exe')
url = 'https://www.google.co.kr/imghp?hl=ko&tab=ri&ogbl'
driver.get(url)

input_box = driver.find_element_by_css_selector('.gLFyf.gsfi')
# 공백은 .으로 바꿔준다.

# 마우스 이벤트 모방
input_box.click()

input_box.send_keys('nft')
input_box.click()

# 스크롤을 내릴 때 스크롤이 지금 어디 위치에 있는지 알아야
# 내린 후 스크롤 위치 확인(height=0에서 잠시 기다림)
SCROLL_PAUSE_TIME = 1

# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")

# 초깃값: max
# 현재값: 바닥값

while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # Wait to load page
    time.sleep(SCROLL_PAUSE_TIME)

    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        try:
            driver.find_element_by_css_selector('') # 결과 더보기 클릭
        except:
            break

    last_height = new_height

images = driver.find_element_by_css_selector('rg_i Q4LuWd')

index = 0
for image in images:
    image_url = image.get_attribute('src')
    index += 1
    if image_url != None:
        urllib.request.urlretrieve(image_url, f"../images/{index}.jpg")
    print(index, image_url)
profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글

관련 채용 정보