연예뉴스크롤링의 CSS연산자 적용 및 no attribute 'text' 해결 방법
안녕하십니까, 강사님. 강의 잘 듣고 있습니다.
<연예뉴스크롤링>에서 뉴스 불러오기가 안돼 질문드립니다.
이렇게 코드를 작성했습니다.
import requests
from bs4 import BeautifulSoup
import time
response = requests.get("https://entertain.naver.com/ranking/read?oid=076&aid=0004129264")
html = response.text
soup = BeautifulSoup(html, 'html.parser')
articles = soup.select("div.info_group")
for article in articles:
links = article.select("a.info")
if len(links) >= 2:
url = links[1].attrs['href']
response = requests.get(url, headers={'User-agent':'Mozila/5.0'})
html = response.text
soup = BeautifulSoup(html, 'html.parser')
if "entertain" in response.url:
title = soup.select_one(".end_tit")
content = soup.select_one("#articeBody")
else:
title = soup.select_one("#articleTitle")
content = soup.select_one("#newsct_article")
print(content.text)
이렇게 하면 이런 표시만 나옵니다.
C:\스타트코딩_크롤링>C:/Users/Sedaily/AppData/Local/Microsoft/WindowsApps/python3.11.exe c:/스타트코딩_크롤링/03_연예뉴스크롤링하기.py
그래서
else:
title = soup.select_one("#articleTitle") 의 CSS 연산자를 #news_tit로 바꿔서
else:
title = soup.select_one("#news_tit")
이렇게 하니 불러오기는 됩니다.
[1번 질문] 강의 마지막 부분에 ID 값이기 때문에 앞의 # 을 . 으로 변경하라고 알려주셨는데 그렇게 하면 안됩니다. html이 강의 당시와 변경돼 그런 건지, 이유가 궁금합니다.
[2번 질문] 마지막 부분의 print(content.text) 대신
링크, 제목, 본문 정리해서 가져오는 코드로 알려주신 이 코드를 밑에 붙이면
print("=======링크=======\n", url)
print("=======제목=======\n", title.text)
print("=======본문=======\n", content.text)
이렇게 표시가 됩니다. 해결 방법 알려주시면 감사하겠습니다.
=======링크=======
https://n.news.naver.com/mnews/article/003/0012480442?sid=101
Traceback (most recent call last):
File "c:\스타트코딩_크롤링\03_연예뉴스크롤링하기.py", line 26, in <module>
print("=======제목=======\n", title.text)
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'text'
답변 1
1
코드가 들여쓰기 되어 있지 않아서 실행하기가 어렵네요 ㅜ
AttributeError: 'NoneType' object has no attribute 'text'는
선택자가 올바르지 않아서 발생하는 오류입니다.
HTML 구조에 맞는 선택자만 똑바로 만들면 문제를 쉽게 해결할 수 있습니다.
이번에 새로 리뉴얼한 크롤링 기초 강의인데 한번 보시면
HTML 구조와 선택자를 만드는데 많은 도움이 되실 겁니다 🙂
셀레니움 환경설정 오류
0
45
2
네이버 로그인 관련
0
252
2
안녕하세요 셀레니움에 대해서 질문
0
84
1
크롤링 연습사이트 문의
0
95
2
선택자 질문
0
71
2
'특정 요소가 나타날 때까지 스크롤' 부분 에러
0
76
2
자동 로그인 질문
0
86
2
44강 제목, 링크
0
105
1
원하는 값이 없을 때
0
89
2
크롤링한 링크가 엑셀로 들어가면 작동이 안되요
0
227
2
셀레니움 PDF자료는 받을 수 있나요
0
100
2
글목록 추출하기
0
97
2
메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문
0
88
2
강의 노트가 어디에 있는건가요?
0
80
2
강의 커리큘럼 질문
0
97
1
조건문 else 사용하지 않는 이유
0
75
2
셀레니움으로 접근할 수 없는 경우
0
95
2
웹페이지 변경
0
70
2
자바스크립트로 태그 선택 시 질문입니다.
1
64
2
수료증은 어떻게 받나요?
0
117
2
class명을 활용하여 선택자를 만들지 않는 경우..?
0
60
2
드라이버가 안 열려요
0
79
2
이거 해결방법 아시는 분?
0
121
2
네이버 지식인 크롤링..
0
201
2





