summ의 블로그

웹 크롤링 (3) 본문

파이썬

웹 크롤링 (3)

summ._ 2024. 9. 23. 23:50

240923 

<<< 구글 devtools와 익숙해지기! >>>

 

selenium 

 

pip install selenium
from selenium import webdriver
import time

 

자동화하기 위해서 driver를 사용함

- 웹 브라우저 창과 상호작용, URL 이동, 페이지에서 요소 찾기와 같은 작업을 수행

from selenium import driver 
driver = webdriver.Chrome()

 

  • page 이동 driver.get(url)
  • 자바스크립트 driver.execute_script()
  • 검색어 입력 driver.find_element(By.CSS_SELECTOR, '').send_keys('검색어')
  • 클릭 driver.find_element(By.CSS_SELECTOR).click()
  • 텍스트 뽑아오기 driver.find_element(By.CSS_SELECTOR, '').text
  • 페이지 n초 기다리기 time.sleep(n) 
  • 링크 driver.get_attribute('href')

 

* By : 요소를 찾기 위한 클래스 

* CSS_SELECTOR : css selector로 검색

* ID : id 이용하여 검색 

* XPATH : 경로로 검색 

find_element(By.ID) 

find_element(By.CLASS_NAME)

find_element(By.)

 

 

 

scrapy 

 

: 오픈 소스 웹 크롤링 프레임워크


앞서 진행한 동적, 정적 크롤링보다 더 많이 사용하는 scrapy 에 대해 공부했다. 

 

pip install scrapy
import scrapy
from news.items import NewsItem

 

가져올 데이터의 구조를 정의할 때 사용되는 items.py 모듈에서 사용자 정의 항목 클래스 NewsItem

 

 

 

  • 스케줄러: url이 크롤링되는 순서를 관리함
  • 다운로더: 스케줄러로 요청을 받아 인터넷에서 웹페이지를 가져오는 역할
  • response: html, url 콘텐츠를 가져와 spider로 전달
  • spider: 데이터를 추출하며 스크래핑 작업 생성 방법 정의 crawling process
  • item: data model 일종의 컨테이너로 데이터 구조를 정의함 
  • pipeline: 데이터를 가공하고 저장하기 위한 클래스 
  • middlewares: 요청과 응답을 처리하기 위한 사용자 정의 클래스
  • settings: robots.txt 규칙, 요청을 보내고 여러 py를 통해 최종적으로 스크랩된 데이터 저장

* robots.txt : 웹 크롤러가 접근할 수 있는 것/ 없는 것에 대한 규칙 제공

 

 

url = ' '
response = requests.get(url)
selector = ' ' # 추출할 데이터 xpath 
links = response.xpath(selector).extract() #  xpath 를 사용하여 response에서 일치하는 요소를 찾고 데이터 추출

 

 

%%writefile 파일명/파일/items.py

%%writefile 파일명/파일/spiders/spider.py

- parse 함수 사용: 웹 페이지를 요청하고 응답을 처리하는 기본 메서드로 yield 사용 

 

* %%writefile: Jupyter에서 파일을 생성하거나 덮어쓰는 데 사용 

items, spider 파일을 작성하면 된다. 

 

 

마지막 실행 방법

실행 dir 에서 cmd 이동 후 scrapy spider name

 

 

 

 

### https://wikidocs.net/198941

'파이썬' 카테고리의 다른 글

웹 크롤링 (2)  (1) 2024.09.21
파이썬 기초와 웹 크롤링 기초  (0) 2024.09.19
이변량분석 범주형 변수  (0) 2024.09.13
범주형 변수와 수치형 변수 분석  (0) 2024.09.13
수치형변수 이변량분석  (0) 2024.09.12