네이버평점 크롤링에서 질문있습니다
584
작성한 질문수 22
.png)
답변 3
1
코드를 보니 어떤 질문을 하셨는지 이해했습니다.
보면 content = tr.find("td", {"class", "title"}).text 로 내용을 모두 구해오셨는데 이 안에 모든 정보가 들어가 있고 text 는 str 형태기 때문에 여기서 제목, 별점을 분리하려면 문자열 파싱을 해야 합니다. 문자열 파싱이란 말 그대로 문자열에서 내가 원하는 데이터를 뽑아내는 걸 일컫는데 str 의 find 함수 같은걸 사용해서 이리저리 인덱싱을 해야하는데 좀 귀찮죠.
그래서 문자열 파싱보다는 위의 tr.find("td", {"class", "title"}) 까지만 하면 해당 결과는 BeautifulSoup 형태가 되니까 여기서부터 하위 태그를 하나 하나 find 하여서 직접 접근하는데 훨씬 편합니다. 일단 find 함수를 사용하셨기에 저도 find 함수를 써서 코드를 짜보긴 했습니다만 보통 select, select_one 함수를 쓰는게 훨씬 더 편합니다.
어쨌든 길게 설명하는것보다 코드를 보는게 훨씬 더 이해하기 좋을테니 코드를 한번 짜봤습니다.
import requests
from bs4 import BeautifulSoup
#select는 만족하는 여러 인스턴스를 찾고, find는 첫 번째 인스턴스를 반환합니다.
def get_movie_point(start, end):
result = []
for i in range(start, end+1):
url = 'https://movie.naver.com/movie/point/af/list.nhn?&page={}'.format(i)
r = requests.get(url)
bs = BeautifulSoup(r.text, "lxml")
trs = bs.select("table.list_netizen > tbody > tr")
for tr in trs: #다수의 평점
# td 의 title 클래스를 구합니다.
tr_data = tr.find("td", {"class", "title"})
# td class="title" 자식중 최초 a 태그안에 제목만 추출
title = tr_data.find("a").text
# td class="title" 자식중 div 태그 자식중 em 태그에 점수 추출
score = tr_data.find("div", {"class", "list_netizen_score"}).find("em").text
# td class="title" 태그에서 a, div, br 태그 제거
# a를 두번하는 이유는 find() 함수는 1개만 리턴되기 때문에
# 2개의 a 태그를 삭제하기 위해서
# extract() 함수는 태그와 태그의 내용까지 모두 제거합니다.
tr_data.find("a").extract()
tr_data.find("a").extract()
tr_data.find("div").extract()
tr_data.find("br").extract()
# 위에서 태그를 모두 제거하고 내용만 추출
content = tr_data.text.strip()
print("*" * 100)
print(title, score, content)
get_movie_point(1,1)
0
0
제가 질문을 잘 이해하지 못하겠습니다.
"영화제목부터 평점, 감상평까지 가져올수 있지만 감상평만 가져오고 싶은데 어떻게 해야할지 잘 모르겠습니다"
이미 제목, 평점, 감상평을 가져왔다고 하셨는데 거기서 감상평만 가져오고 싶다는말을 이해하지 못하겠습니다.
전체 코드를 올려주시면 더 이해하기 좋을듯 싶습니다
38강 = 연산자 더하고 빼기
0
60
2
주석처리
0
117
1
함수의 파라미터값 msg
0
155
1
강의자료 이미지 안나옴
0
239
3
강의자료 질문 두번째
0
165
3
강의자료 관련 질문
0
116
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
235
1
소수 너무 어려워요
0
245
1
imagefont 함수 사용
0
239
1
pylint
0
357
1
add 함수 문의 ㅠㅠ
0
283
1
형식 문의드립니다.
0
209
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
602
1
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
0
253
1
zsh: command not found: pylint
0
269
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
546
1
질문드립니다.
1
374
2
list.reverse() 출력에 대해서 질문있습니다.
1
433
1
데코레이터 함수 및 동작시간 질문입니다.~
1
323
2
opencv 사용하면서 궁금한점 (해상도)
1
781
1
질문드립니다.
1
299
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
445
1
크롤링안되는 현상 문의 드립니다.
1
421
1
파이썬 크롤링 관련 문의
1
277
1





