작성
·
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="...">
그래서 에러가 발생합니다.