23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
내가 원하는 이미지를 웹사이트 검색을 통해 수집합니다.
Python crawling package인 Selenium을 사용하기 위해서는 두가지가 필요합니다.
Selenium에서 사용할 browser에 대한 드라이버
저는 Selenium 내에서 크롬을 사용할 것이기 때문에 chrome driver를 다운받습니다
그리고 나서 Selenium package가 있는 python 경로로 옮겨줍니다.
Geckodriver를 다운받습니다.
저는 Selenium 내에서 크롬을 사용할 것이기 때문에 chrome driver를 다운받습니다
저는 구글에서 이미지 검색 했을 때 바로 나오는 이미지가 아닌 원본 이미지를 가져오고 싶기 때문에 검색했을 때 나오는 이미지와 클릭후 나오는 원본 이미지에 대한 css selector 또는 Xpath경로가 필요합니다.
이 두가지를 활용하여 해당 Property의 태그 정보를 가져올 수 있기 때문입니다.
정보를 가져오기 위해서 저는 크롬 개발자도구에서 element select하는 방법을 활용했습니다. (참고링크)
검색하고 나오는 이미지들에 대한 css selector
검색 후 나오는 이미지 배열은 공통적으로 class=”rg_i”라는 프로퍼티를 동시에 가집니다.
클릭했을 때 나오는 원본 이미지의 XPath
클릭 후 이미지의 Xpath는 //*[@id="Sva75c"]/div[2]/div/div[2]/div[2]/div[2]/c-wiz/div[2]/div[1]/div[1]/div[2]/div/a/img 입니다
저는 구글에서 이미지 검색 했을 때 바로 나오는 이미지가 아닌 원본 이미지를 가져오고 싶기 때문에 검색했을 때 나오는 이미지와 클릭후 나오는 원본 이미지에 대한 css selector 또는 Xpath경로가 필요합니다.
이 두가지를 활용하여 해당 Property의 태그 정보를 가져올 수 있기 때문입니다.
위에서 얻은 property 정보를 활용하여 Crawling을 code를 작성합니다.
import requests
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
import time
import json
chrome_options = webdriver.ChromeOptions()
chrome_options.binary = '/Users/chemseok/miniforge/envs/epicone/bin/chromedriver'
query = '루피'
driver = webdriver.Chrome()
driver.get(f'https://www.google.com/imghp')
search_bar = driver.find_element(By.NAME,"q")
search_bar.send_keys(query)
search_bar.submit()
PAUSE_TIME = 2
last_hegiht = driver.execute_script("return document.body.scrollHeight")
new_height = 0
while True :
driver.execute_script("window.scrollBy(0,5000)")
time.sleep(PAUSE_TIME)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height - last_hegiht > 0 :
last_hegiht = new_height
continue
else :
break
img_elements = driver.find_elements(By.CSS_SELECTOR,".rg_i")
img_rst = []
for idx, img in enumerate(img_elements) :
print(f"{query} : {idx+1}/{len(img_elements)} proceed...")
try :
img.click()
time.sleep(PAUSE_TIME)
img_element = driver.find_element(By.XPATH,'//*[@id="Sva75c"]/div[2]/div/div[2]/div[2]/div[2]/c-wiz/div[2]/div[1]/div[1]/div[2]/div/a/img')
img_src = img_element.get_attribute('src')
img_alt = img_element.get_attribute('alt')
img_rst.append({
'alt' : img_alt,
'src' : img_src
})
except :
pass
driver.close()
print(img_rst)
하나만 담은 결과입니다. 제목과 img url이 잘 담긴것을 확인할 수 있습니다.
상업적인 목적으로 구글 사이트 크롤링 하는 것은 법으로 금지되어있습니다. 잘 확인하고 사용하시길 바랍니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.