2018-01-05 TIL(WPS pre-school Day4)

Pre-school Day 4

웹 크롤링

requests는 웹페이지를 가져오거나 API를 사용할 때 필요

$ pip install requests

BeautifulSoup는 Python라이브러리로 html, xml을 파싱해줌

$ pip install beautifulsoup4

참고)

www.naver.com/robots.txt

  • robots.txt

웹 크롤링할 때 건드리지 말아야할 리스트를 명시해놓음

실습

  • 네이버 실시간 검색어 긁어오기
import requests
from bs4 import BeautifulSoup as bs

r = request.get('http://www.naver.com')
r.text # 긁어온 내용을 출력
naver = bs(r.text, html5lib') #html5 형식으로 파싱
naver.html #html5 형식으로 출력
naver.body #body 내용만 출력
keyword_list = naver.find_all('li', class_'ah_item') #크롬 개발자도구에서 정보를 추출해냄
for keyword in keyword_list[:20]:
	print(keyword.text.strip())
  • 네이버 영화 순위, 줄거리 긁어오기 + txt파일에 저장하기
import requests
from bs4 import BeautifulSoup as bs

practice_get = request.get('http://movie.naver.com/movie/sdb/rank/rmovie.nhn')

soup1 = bs(practice_get.text, 'html5lib')

movie_list = soup1.select('#old_content > table > tbody > tr > td.title > div > a')

f = open('{}.text'.format(today), 'w')
for movie in movie_list:
	url = 'http://movie.naver.com' + movie.attrs['href']
	r = request.get(url)
	soup2 = bs(r.text, 'html5lib')
	story = soup.select('#content > div.article > div.section_group.section_group_frst > div > div > div.story_area > p')
	f.write(movie.text)
	if len(story) != 0:
		f.write(story[0].text)
	f.write('\n')
f.close()
  • Gotthard 2018년 콘서트 일정 긁어오기
import requests
from bs4 import BeautifulSoup as bs
gotthard= requests.get('http://gotthard.com/en/tourdates/tour-2018.html')
htmlParsing = bs(gotthard.text, 'html5lib')

data_list = htmlParsing.select('body > div.layoutBackground > div > div.layoutStage > div.layoutContent > div.boxContent > div > ul')
for data in data_list:
    print(' '.join(d.text for d in data.find_all('li')[1:5]))

Comments