
개발자 도구(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