인문대생의 데이터직군 취업로그 28

류지윤·2023년 7월 10일
0
post-thumbnail
  1. 크롬 개발자 도구 이용하기
    < 환율 정보 가져오기 >
  • 네이버 금융에서 시장지표 탭으로 이동하기
  • USD 환율 체크를 파이썬으로 하고싶은데 HTML을 잘 모를 때 이용하는 도구 : 크롬 개발자 도구
  • 크롬 설정 -> 도구 더보기 -> 개발자 도구(화면 오른쪽부터 선택)
  • (사진과 같은 곳을 클릭 한 후 ) 필요한 데이터 부분 선택하기
  • 이렇게 한다면 내가 원하는 HTML 태그가 위치한 곳을 찾아 갈 수 있다.
  • span class =“value” 잘 기억하기
from urllib.request import urlopen

url = “http://info.finance.naver.com/marketindex/” 
page = urlopen(url)
soup = BeautifulSoup(page, “html.asrser”)
print(soup.prettify())
  • 웹주소에 접근할때는 urllib의 request모듈이 필요하다.
  1. 위키백과 문서 정보 가져오기
  • 여명의 눈동자 위키백과 페이지로 이동
  • 웹페이지 URL 복사 후 메모장이나 jupyter notebook 셀에 붙여넣기
  • 웹 주소는 utf-8로 인코딩되어야 한다.
import urllib
from urllib.request import Request

html = “https://ko.wikipedia.org/wiki/{search_words}”
req = Request(html.format(search_words=urllib.parse.quote(“여명의_눈동자”)))
response = urlopen(req)
soup = BeautifulSoup(response, “html.parser”)
soup

n = 0
for each in soup.find_all(‘ul’):
	print(“=>” + str(n) + “================”)
	print(each)
	n += 1

soup.find_all(“ul”)[2]
  1. list 데이터형
  • List 형은 대괄호로 생성한다.
    colors = [“red”, “blue”, “green”]

print(colors[0])
print(colors[1])
print(len(colors))

  • List 형을 반복문 (for)에서 사용하는 방법이 다른 언어에 비해 편하다.
  • in 명령으로 조건문(if)에 적용하는 것도 역시 다른 명령어에 비해 편하다.
  • append : list 제일 뒤에 하나 추가
  • pop : 제일 뒤 자료를 지움
  • extend : 제일 뒤에 다수의 자료를 추가
  • remove : 같은 이름의 자료를 지움
  • 슬라이싱 : [n:m] n번째부터 m-1까지
  • insert : 원하는 위치에 자료를 삽입
  • list 안에 list를 가질 수 있다.
  • isinstance : 자료형이 list인지 확인 할 수 있다.

014-016. 시카고 맛집 메인페이지 분석

  • 메인페이지 : 시카고의 50개 맛집 샌드위치에 대해 메뉴와 가게 이름이 정리되어 있다.
  • 세부페이지 : 각각을 소개한 50개의 페이지에 가게 주소와 대표 메뉴의 가격이 있다.
  • 최종목표 : 총 51개 페이지에서 각 가게의 정보를 가져온다.
    < 가게이름, 대표메뉴, 대표메뉴의 가격, 가게주소 >


from urllib.request import Request, urlopen

url_base = “http://www.chicagomag.com”
url_sub = “/Chicago-Magazine/Novemver=2012/Best-Sandwiches-Chicago/”
url = url_base + url_sub



req = Request(url, headers={“User-Agent”: “Chrome”})
html = urlopen(req).read()
soup = BeautifulSoup(html, “html.parser”)

soup

print(soup.find_all(“div”, “sammy”))

len(soup.find_all(“div”, “sammy”))
# 50개가 제대로 들어온 것을 확인하기

print(soup.find_all(“div”, “sammy”)[0])

tmp_one = soup.find_all(“div”, “sammy”)[0]
type(tmp_one)
# type이 bs4.element.Tag라는 것은 find명령을 사용할 수 있다는 뜻

tmp_one.find(class_=“sammyRank”)
tmp_one.find(class_=“sammyRank”).get_text()
# 랭킹 데이터 확보

tmp_one.find(class_=“sammyListing”).get_text()
# 가게 이름과 메뉴 데이터가 한번에 있다.

tmp_one.find(“a)[”href“]
# 연결되는 홈페이지 주소가 ‘상경대로’임

import re
tmp_string = tmp_one.find(class_=“sammyListing”).get_text()
re.split((“역슬래쉬n|역슬래쉬r역슬래쉬n”), tmp_string)
#가게 이름과 메뉴는 re 모듈의 split으로 쉽게 구분할 수 있다.

0개의 댓글