Search

웹 스크래퍼(feat. python)

가. 엑셀 처리

1) 스크래핑 후 엑셀 저장
이하 예제는 다음 링크 [참조]
import requests from bs4 import BeautifulSoup from openpyxl import Workbook url = 'https://finance.naver.com/' response = requests.get(url) response.raise_for_status() html = response.text soup = BeautifulSoup(html, 'html.parser') tbody = soup.select_one('#container > div.aside > div.group_aside > div.aside_area.aside_popular > table > tbody') trs = tbody.select('tr') datas = [] for tr in trs: name = tr.select_one('th > a').get_text() current_price = tr.select_one('td').get_text() change_direction = tr['class'][0] change_price = tr.select_one('td > span').get_text() datas.append([name, current_price, change_direction, change_price]) write_wb = Workbook() write_ws = write_wb.create_sheet('결과') for data in datas: write_ws.append(data) write_wb.save(r'파일경로/파일이름.xlsx')
Python
복사

나. 실시간 스크래핑

1) 기본 예제
이하 예제는 다음 링크 [참조]
import requests from bs4 import BeautifulSoup codes = ['096530', '010130'] # 종목코드 리스트 prices = [] # 가격정보가 담길 리스트 for code in codes: url = 'https://finance.naver.com/item/main.nhn?code=' + code response = requests.get(url) response.raise_for_status() html = response.text soup = BeautifulSoup(html, 'html.parser') today = soup.select_one('#chart_area > div.rate_info > div') price = today.select_one('.blind') prices.append(price.get_text()) print(prices)
Python
복사

다. robots.txt

1) 기본 활용
크롤러에게 접근 허용여부 전달
robots.txt 예시
# 모든 크롤러에게 접체 웹사이트 크롤링 금지 User-agent: * Disallow: / # 모든 크롤러에게 일부 경로만 크롤링 금지 User-agent: * Disallow: /calendar/ Disallow: /junk/ Disallow: /books/fiction/contemporary/ Allow: /
Python
복사

Reference