Web Crawling

DONGHYUN KOO·2020년 9월 13일
0

웹크롤링이란?

  • 웹 사이트르 분석하여 원하는 데이터를 추출하는 과정

Tools

개발자 도구를 열어보면 화면에 나타나는 정보는
모두 로 만들어진 코드를 분석해서 데이터를 가져오는 과정에 도움을 주는 라이브러리

Beautiful Soup

웹을 구성하는 의 'id''class'와 같은 selector를 분석하여 변수로 사용할 수 있도록 도와주는 라이브러리
정적인 페이지를 크롤링 하는데 사용됩니다.

>>conda create web-scrapping(가상환경을 만들기)
>>conda activate web-scrapping
>>pip install beautifulsoup4

selenium

브라우저를 실행시켜 동적인 입력이 필요한 웹을 구동할 수 있는 라이브러리
동적인 페이지를 크롤링
예)' 크롤링' 단어 검색 결과 페이지 스크랩

>> conda activate web-scraping
>> pip install selenium
>> pip install webdriver-manager(웹 드라이버 매니저도 추가적으로 설치)
from bs4 import BeautifulSoup  
import requests(다른 서버에 요청을 함)
import re
import csv

#1. csv file open
#csv_outfile = 'laro_skin.csv'
#csv_open = open(csv_outfile, 'w+', encoding='utf-8')
#csv_writer = csv.writer(csv_open)
#csv_writer.writerow(('category','name','tags','short_desc','price'))

crawling_url = "https://www.vogue.co.kr/category/fashion/page/1"(긁어오고 싶은 대상 페이지)
response = request.get(crawling_url) -대상 코드가 나옴
print("NOW response.html=", end =""), print(response.text)
-개발자 도구에 있는 html내용이 그대로 온다

req = requests.get(crawling_url)
html = req.text
bs = BeautifulSoup(response.text, 'html.parser')-html을 읽어서 변수로 사용가능
print(bs)

#개발자 도구에서 copy하기
category_ list = bs.find('#main > div > div > ul > li > a')#"copy selector한 내용"
for word in category_list:
  	print(word.text)

python selenium_examplel.py

import csv
import time
from bs4 import BeautifulSoup
from selenium import Webdiver
from webdriver_manager.chrome import chromeDriverManager

csv_filename ="sokcho_restaurants_and_tages.csv"
csv_open = open(csv_filename, "w+", encodeing='utf-8')
csv_writer = csv.writer(csv.open)
csv_writer.writerow( ('title','tags') )

query_keyword = input("크롤링 키워드는?")

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://korean.visitkoea.or.kr/main/main.do")
time.sleep(4)

driver.find_elemet_by_id("btnSearch").click()
element = driver.find_element_by_id("inp_search")
element.send._keys(query_keyword)

driver.find_element_by_link_text("검색").click()  
full_html = driver.page_source

soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(4)
print(soup)

titles = soup.select()
tags = soup.select()
time.sleep(3)

title_list = [title.text fir title in titles]# 동해바다... ,[속초]깔끔하고..
tag_lilst = [tag.set.text.split('#')[1:] for tag_set in tags]
#[[강원도,속초,도루묵],[속초숙소,우수숙박.인증숙박][SRT매거진,강원도]
print(tag_list)

for i, title in enumerate(title_list):
#i-> 인덱스(0,1,2....)
#title ->요소
 for j, tag in enumerate(tag_list[i]):
#j ->인덱스
 	tag -> 강원
 	 print(tag)
    if j == 0:
       csv_writer.writerow((title, tag))
 	 else:
  		csv_writer.writerow(('',tag))

0개의 댓글