inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

연예뉴스크롤링의 CSS연산자 적용 및 no attribute 'text' 해결 방법

해결된 질문

211

Khun

작성한 질문수 2

0

안녕하십니까, 강사님. 강의 잘 듣고 있습니다.

<연예뉴스크롤링>에서 뉴스 불러오기가 안돼 질문드립니다.

 이렇게 코드를 작성했습니다.

 

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'

 

 

python 웹-크롤링

답변 1

1

스타트코딩

코드가 들여쓰기 되어 있지 않아서 실행하기가 어렵네요 ㅜ

 

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

선택자가 올바르지 않아서 발생하는 오류입니다.

 

HTML 구조에 맞는 선택자만 똑바로 만들면 문제를 쉽게 해결할 수 있습니다.

 

이번에 새로 리뉴얼한 크롤링 기초 강의인데 한번 보시면

HTML 구조와 선택자를 만드는데 많은 도움이 되실 겁니다 🙂

https://youtu.be/Uf21RUo3KNc

 

 

셀레니움 환경설정 오류

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