인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

주먹왕님의 프로필 이미지
주먹왕

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

뷰티풀수프(beautifulsoup) 기초 사용법

title["href"] 가져올 때

작성

·

144

0

 

import requests
from bs4 import BeautifulSoup

url = "https://search.naver.com/search.naver?where=view&sm=tab_jum&query="
keyword = input("검색어를 입력하세요: ")


url = url  + keyword
print(url)


#개발자 도구 > 네트워크 > www.naver.com > 요청 헤더 > user-gent
headers = {
    "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
req = requests.get(url, headers=headers)

html = req.text

soup = BeautifulSoup(html, "html.parser")


# 게시물별 view 구역
total_area = soup.select(".view_wrap")

rank_num= 1
for area in total_area:
    
    ad = area.select_one(".link_ad")
    if ad:
        continue
    print(f"<<<{rank_num}>>>")

    title = area.select_one(".title_area")
    name = area.select_one(".name")
    href = area.select_one(".title_link")

    print(title.text)
    print(name.text)
    # print(title["href"]
    print(href["href"])
    print()
    rank_num += 1
    

<에러 문구>

line 41, in <module>

print(title["href"])

File "/User/opt/anaconda3/envs/edu/lib/python3.9/site-packages/bs4/element.py", line 1573, in getitem

return self.attrs[key]

KeyError: 'href'

 

 

안녕하세요, 수업 잘 듣고 있습니다.

저도 블로그 링크를 바로 가져오고 싶어서 print(title["href"]로 가져오려 했으나 keyError가 발생합니다.

 

우선 대안으로, href 변수를 반들고 따로 링크만 가져올 수 있는 코드를 추가하긴 하였으나 왜 키 에러가 발생하여 print(title["href"]로 링크를 바로 못 가져 오는 것인지가 궁금합니다.

 

 

 

답변 1

0

김플님의 프로필 이미지
김플
지식공유자

올리신 코드에 print(title) 추가 해보시면 답이 바로 나옵니다.
print(title["href"]) <- title 안에는 href 속성이 없습니다.
<div class="title_area"> 안에 있는 a 태그에 href 속성이 있죠.
<div class="title_area"> <a class="title_link" data-cb-target="..." data-cb-trigger="" href="...">
그래서 에러가 발생합니다.

주먹왕님의 프로필 이미지
주먹왕

작성한 질문수

질문하기