파이썬을 이용한 웝 크롤링 (python web crawling with Selenium)
본문에서는 파이썬을 이용한 웹 크롤러 제작에 대한 내용을 다룹니다.
이전 포스터의 연장입니다. 내용 이해를 위하여 이전 포스트 확인 부탁드립니다.
1. 텍스트 데이터 수집하기
보는바와 같이 겨우 7줄의 코드로 모든 과정이 수행됩니다.
< 코드 >
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome('./chromedriver.exe') driver.get('https://ko.wikipedia.org/wiki/%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC:%EB%8C%80%EB%AC%B8') driver.find_element_by_xpath('//*[@id="mp_search"]/table/tbody/tr/td[1]/div/div/form/input[1]').send_keys('네이버') driver.find_element_by_xpath('//*[@id="mp_search"]/table/tbody/tr/td[1]/div/div/form/input[1]').send_keys(Keys.ENTER) print(driver.find_element_by_xpath('//*[@id="mw-content-text"]').text)
2. 이미지 데이터 수집하기
왼쪽이 코드고, 오른쪽은 파이썬이 제어하는 크롬화면입니다.
< 코드 >
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome('./chromedriver.exe') driver.get('https://naver.com') driver.find_element_by_xpath('//*[@id="query"]').send_keys('마동석') driver.find_element_by_xpath('//*[@id="query"]').send_keys(Keys.ENTER) driver.find_element_by_xpath('//*[@id="lnb"]/div/div[1]/ul/li[2]/a/span').click() link = [] for i in range(1, 30): try: img = driver.find_element_by_xpath('//*[@id="_sau_imageTab"]/div[1]/div[2]/div['+ str(i) + ']/a[1]/img') except: img = driver.find_element_by_xpath('//*[@id="_sau_imageTab"]/div[2]/div[2]/div['+ str(i) + ']/a[1]/img') link.append(img.get_attribute('src'))
왼쪽 코드부 하단에 link 라는 리스트에 저장되는 내용은 오른쪽 이미지들의 이미지 링크입니다.
반복문내에서 이미지 주소를 갖고와서 바로바로 저장하는 방법보다는 한번에 이미지들의 링크를 수집한 후 이 링크들의 이미지들을 다운로드 하는 방식이 저는 더 편해서 이렇게 했습니다. (중간에 애러떠도 수정하기 쉬우니까요)
그럼 최종적으로 이미지는 어떻게 저장할까요?
파이썬의 내장 라이브러리인 urllib를 사용합니다.
import urllib.request count = 0 for url in link: count += 1 urllib.request.urlretrieve(url, './img/img'+str(count)+'.jpg')
다음이야기~
'머신러닝 > 데이터 수집' 카테고리의 다른 글
[파이썬 크롤링] 네이버 동영상 크롤링 (3/4) (Selenium 크롤링) (0) | 2019.04.13 |
---|---|
[파이썬 크롤링] 네이버 동영상 크롤링 (2/4) (Selenium 크롤링) (2) | 2019.04.12 |
[파이썬 크롤링] 네이버 동영상 크롤링 (1/4) (Selenium 크롤링) (0) | 2019.04.12 |
파이썬 웹 크롤링 초급(with, Selenium) (1/2) (0) | 2019.01.02 |