개발자 도구(F12)
를 이용해 직접 위치를 찾기.우 클릭 후 검사
선택해서 찾아 주는 위치를 파악하기.책들의 제목
이기 때문에 제목에서 우 클릭 후 검사
를 눌러 주면 다음과 같이 웹 페이지 HTML
코드에서의 요소 위치가 뜨게 된다.h3
태그 안에 있으며 a
태그의 context
에는 화면상 보여 주는 일부 제목이 들어 있고 title
에는 전체 제목이 들어 있음을 알 수 있다.import requests
from bs4 import BeautifulSoup
res = requests.get("http://books.toscrape.com/catalogue/category/books/travel_2/index.html") #해당 사이트에 보낸 요청의 응답을 get
soup = BeautifulSoup(res.text, "html.parser") #BeautifulSoup을 통해 응답받은 HTML 정보를 분석하여 객체로 생성
import requests
: 웹 스크래핑을 할 웹 페이지에 요청을 보내고 응답을 받기 위해 requests
라이브러리를 호출한다.from bs4 import BeautifulSoup
: HTML Parsing
을 위한 BeautifulSoup
라이브러리를 호출합니다.request.get("웹페이지URL")
: get
을 통해 해당 사이트에 요청을 보낸 후 받은 응답을 res
라는 객체에 넣어 줍니다.BeautifulSoup(응답 TEXT, 파싱할 언어)
: res
의 text
값을 html.parser
를 통해 파싱
해 줍니다.책의 제목
이 h3
태그 안에 있으며 a
태그의 title
이라는 것을 확인했다.제일 처음 등장하는 요소
만 구하고자 할 때는 find
를 사용하며 모든 요소
를 구할 때는 find_all
을 사용해 준다.find_all
의 경우 여러 데이터가 출력돼 list
가 되기 때문에 for문
을 통해 추출해 준다.book = soup.find("h3") # h3의 요소 하나만 추출하고자 할 때
books = soup.find_all("h3") #h3의 모든 요소를 추출하고자 할 때
print(book.a.text) #book은 하나의 요소만 추출한 것이기 때문에 그에 해당하는 context가 추출된다.
for bk in books:
print(bk.a["title"])
a 태그
안에 있는 context
를 추출하고자 할 때는 .text
를 사용해 준다.
a 태그
안에 있는 title
을 추출하고자 할 때는 Dictionary
를 떠올리며 key
를 title
로 지정해 호출한다.
# 결과
It's Only the Himalayas
Full Moon over Noahâs Ark: An Odyssey to Mount Ararat and Beyond
See America: A Celebration of Our National Parks & Treasured Sites
Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel
Under the Tuscan Sun
A Summer In Europe
The Great Railway Bazaar
A Year in Provence (Provence #1)
The Road to Little Dribbling: Adventures of an American in Britain (Notes From a Small Island #2)
Neither Here nor There: Travels in Europe
1,000 Places to See Before You Die