기본 용어
http(hyper text transfer protocol)
- hyper text는 마우스로 클릭하면 다른페이지로 이동하는 기능
- http는 다음에 나올 html로 작성되어 있는 hyper text를 전송하기 위한 프로토콜(규약, 약속)
URL(Uniform Resource Locator)
- 인터넷 주소
HTML(Hyper Text Markup Language)
- 웹페이지를 작성하는 문법 언어
- F12(개발자 도구)눌러서 볼수 있다.
웹 브라우저(web browser)
- html을 보기 좋게 출력하는 응용 소프트웨어
웹 스크래핑 연습
BeautifulSoup
- 데이터를 추출하는데 필요한 기능이 들어 있는 라이브러리, 파싱(parsing)라이브러리 라고도 한다.
- 파싱은 받아온 데이터에서 필요한 내용만 추출하는 것을 의미한다.
- from bs4 import BeautifulSoup
# html 파일 읽어들이고 BeautifulSoup객체로 출력 with open("C:/data/happymeal.html",encoding='UTF8') as html: |
|
# title 태그의 문자열 뽑아내기 soup.find('title').string |
|
# body 태그 안에 있는 문자열 뽑아내기 soup.find('body').string |
|
# 중간에 안나오는 문자열도 있음 for i in soup.find('body'): |
|
# get_text()를 사용하려면 find_all()을 같이 써주자 for i in soup.find_all('body'):
for i in soup.findAll('body'):
for i in soup.find_all('body'): |
|
# p태그의 내용 출력 soup.find('p') |
|
# p태그를 가진 모든 내용 출력 soup.find_all('p') |
|
# a태그의 내용 출력 soup.find('a') |
|
# 속성값 중 'href'값 출력 x.attrs['href'] |
|
# a태그의 모든 내용 출력 soup.find_all('a') |
|
# a태그의 속성값 중 'href'값 출력 soup.findAll('a')[0].attrs['href'] |
|
url=[] |
|
# 특정한 태그를 찾을때 그 태그의 class나 id를 기준을 찾는게 좋다. soup.find('a',{'class':'happy'}).attrs['href'] soup.find('a',{'class':'happy'}).string soup.find('a',{'class':'google'}) |
|
# 특정한 태그를 찾을때 그 태그의 class나 id를 기준을 찾는게 좋다. soup.find('a',{'id':'meal'}).attrs['href'] |
웹 크롤링 연습
urllib
- 파이썬에서 인터넷 데이터를 받아 오는 기능들이 들어있는 라이브러리
- 데이터를 받아오는 것을 크롤링(crawling)
- from urllib.request import urlopen
import urllib.request as req
1. 이미지 저장하기
1) 이미지의 주소를 복사한다.
2) req.urlretrieve(이미지주소, 저장경로)로 이미지를 저장한다.
img_url = "https://t1.daumcdn.net/cfile/tistory/9977D14D5DB7FF3D0B"
req.urlretrieve(img_url, "C:/data/shrimp.jpg")
3) 저장 확인
2. 블로그에서 글 제목 뽑아내기
1) 블로그에 url에 접속 및 BeautifulSoup객체 만들기
html = urlopen("https://truman.tistory.com/")
soup = BeautifulSoup(html, "html.parser")
soup
2) 태그를 따라서 들어가기
ul = soup.find("ul",{"class":"list_category"})
ulli = ul.findAll('li')
li
3) 글 제목 태그('strong')에서 문자만 출력하기
for i in li:
a_tag = i.find('strong').text
print(a_tag)
3. 글 내용 WorldCloud로 만들기
1) 페이지 url 오픈 및 BeautifulSoup 객체 생성
html = urlopen("https://truman.tistory.com/74?category=833561")
soup = BeautifulSoup(html,"html.parser")
soup
2) 페이지에서 글 내용만 뽑기
content = []
for i in soup.findAll('div',{'class':'tt_article_useless_p_margin'}):
content.append(i.get_text(strip = True))
content
3) 문자열 정제 작업
txt = ''
delete = '[/.|:|-|\d|(|)|①|②|③|-|,|a-zA-Z|{|}|\n|=|;|·]'
for i in content:
txt = txt+ ' ' +re.sub(delete,'',i)
txt
4) txt내용을 WordCloud로 만들기
from wordcloud import WordCloud, STOPWORDS
wordcloud = WordCloud(font_path = 'C:/windows/fonts/malgun.ttf',
stopwords = STOPWORDS,
background_color = 'black',
width = 1500, height = 1200).generate(txt)
plt.figure(figsize=(10,10))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - 스크래핑 ③ JSON을 이용한 크롤링 (0) | 2020.03.31 |
---|---|
파이썬(Python) - 예외사항 처리 (0) | 2020.03.30 |
파이썬(Python) - 스크래핑 ① 스크래핑 기초 (0) | 2020.03.25 |
파이썬(Python) - 정규표현식과 메타문자 (0) | 2020.03.24 |
파이썬(Python) - matplotlib ③ 상자 그림 / 줄기잎 그림 (0) | 2020.03.24 |