[추Node] 데이터 크롤링

데이터 여행자·2021년 2월 17일
0

스터디

목록 보기
2/15

기본 개념 문제 풀이

  • 파이썬의 문자열 인코딩: UTF-8 사용
  • 하이퍼텍스트
  • 인터넷의 개념
  • 인터넷의 구조
  • TCP/IP의 정의와 역할
  • 소켓
  • 패킷
  • 쿠키와 세션
  • 쿠키와 세션의 차이점 (저장위치, 보안, Lifecycle, 속도)

API(Application Programming Interface)

  • 프로그램들이 서로 소통하는 방법
  • API 를 이용한 지도기반시각화에 관해 자세히 공부

크롤링(Crawling)

  • find(), findAll()함수
    BeautifulSoup객체로 만든 뒤 <p> 태그 항목을 찾는 코드는 다음과 같다.
soup = BeautifulSoup(html, 'html.parser')
soup.findAll({'p'})
# 라이브러리 실행
from bs4 import BeautifulSoup
import requests

# URL 가져오기
url = 'https://m.stock.naver.com/marketindex/index.nhn'
response = requests.get(url)

# Soup 객체 생성
soup = BeautifulSoup(response.text, 'html.parser')

# 국가 추출
country = []
country_1 = soup.findAll('###')
country_2 = soup.findAll('###', {'###':'###'})
for c in country_1:
    country.append(c.text)
for c in country_2:
    country.append(c.text)
# 지워주어야 하는 나라
country.remove('코스콤')
country.remove('에프앤가이드')
country.remove('레피니티브')
country.remove('이데일리')
country.remove('모닝스타')
country.remove('제로인')
country.remove('한국예탁결제원')
country.remove('IR큐더스')
country.remove('지속가능발전소')

# 환율정보 추출
price = []
price_0 = soup.findAll('###', {"###":"###"})
for p in price_0:
    price.append(p.text)

# 데이터 정렬
import pandas as pd
data = {}
for i in range(len(country)):
    data[country[i]] = price[i]

pd.Series(data)
  • 참고 사항
    • f12를 누르기 ->shift+ctrl+c를 누르고 원하는 정보를 누르면 해당 코드를 보여준다.
      ctrl+F를 눌러서 검색하면 위치를 찾을 수 있다.
    • country1는 위에 노출된 나라(strong에 묶여 있음), country2는 아래에 있는 나라(span 에 묶여 있음)이고 다른 항목에 묶여 있어서 다른 변수로 설정해 주었다.
    • 지워주어야 하는 나라는 '컨텐츠 제공업체'에 포함되어 있고, 'strong'에 속해 있다. strong 항목에서 국가만 뽑아내는 인덱스가 없기 때문에 strong 항목을 불러온 후 해당 업체를 지워주어야 한다.

0개의 댓글