• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    미해결

네이버 view탭 검색 결과 크롤링 2, 3 질문

23.08.15 18:46 작성 23.08.15 18:54 수정 조회수 488

1

안녕하세요 강사님. 질문이 있어서 남기게 되었습니다.

첫 번째 질문: 네이버 view탭 검색 결과 크롤링 2를 완료한 이후 아래 코드 실행 후 손흥민을 검색했는데 검색결과가 30개가 아닌 7개가 출력되었습니다. 이러한 이슈 때문인지 네이버 view탭 검색 결과 크롤링 3 강의가 정상적으로 진행되지 않습니다.

import requests
from bs4 import BeautifulSoup # beautiful soup 라이브러리 import

base_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="
keyword = input("검색어를 입력하세요 : ")

url = base_url + keyword

print(url)

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
} # dictionary

req = requests.get(url, headers = headers) # GET 방식으로 naver에 요청
html = req.text # 요청을 하여 html을 받아옴
soup = BeautifulSoup(html, "html.parser") # html을 html.parser로 분석(클래스를 통한 객체 생성)

total_area = soup.select(".total_area")
timeline_area = soup.select(".timeline_area")

if total_area:
    areas = total_area
elif timeline_area:
    areas = timeline_area
else:
    print("class 확인 요망")



for area in areas:
    title = area.select_one(".api_txt_lines.total_tit")
    name = area.select_one(".sub_txt.sub_name")
    print(name.text)
    print(title.text)
    print(title["href"])
    print()

print(len(areas))

 

두 번째 질문: 네이버 view탭 검색 결과 크롤링 3을 진행하면서 아래 코드처럼 작성하고 손흥민을 검색했을 때 NoneType 오류가 발생합니다. 첫 번째 질문의 이슈로 인해 그런 것인가요? .total_wrap.api_ani_send 클래스가 브라우저 상에서는 30개가 잘 나오는데 제대로 안 받아와진 것 같은 느낌이 듭니다. 도와주시면 감사하겠습니다 ㅠㅠ

Traceback (most recent call last):  File "C:\python_web_crawling\01_4_naver.py", line 30, in <module>

    print(title.text)

          ^^^^^^^^^^

AttributeError: 'NoneType' object has no attribute 'text'

 

아래는 코드입니다.

import requests
from bs4 import BeautifulSoup # beautiful soup 라이브러리 import

base_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="
keyword = input("검색어를 입력하세요 : ")

url = base_url + keyword

print(url)

headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
} # dictionary

req = requests.get(url, headers = headers) # GET 방식으로 naver에 요청
html = req.text # 요청을 하여 html을 받아옴
soup = BeautifulSoup(html, "html.parser") # html을 html.parser로 분석(클래스를 통한 객체 생성)

items = soup.select(".total_wrap.api_ani_send")

for area in items:
    # ad = area.select_one(".link_ad")
    # if ad:
    #     print("광고입니다.")
    #     continue

    title = area.select_one(".api_txt_lines.total_tit")
    name = area.select_one(".sub_txt.sub_name")

    print(title.text)
    print(name.text)
   # print(title["href"])
    print()

#print(len(items))

답변 1

답변을 작성해보세요.

1

base_url에 문제가 있습니다.
BBangJun님이 사용하신 base_url을 사용해서 손흥민을 검색하면 아래와 같은 url입니다.
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=손흥민
접속해 보면 view탭이 아닌 걸 확인하실 수 있습니다.

BBangJun님의 프로필

BBangJun

질문자

2023.08.24

감사합니다. 김플님! 사소한 실수 하나가 굉장히 크게 다가오네요... 덕분에 완강할 수 있었습니다 ㅎㅎ 조만간 좋은 후기로 뵙겠습니다!!