inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬 기초부터 실전 100% 활용

네이버 영화 크롤링부분 질문입니다.

351

lmj040423

작성한 질문수 4

1

코드가 다음과 같이 변경되었다고 하셨는데 그렇다면 여기에서는 엑셀로 변환하려면 코드를 어떻게 짜야하나요? 

python 웹-크롤링

답변 3

0

남박사

엑셀 파일이 뜨지 않는다는게 무슨 말씀이신지 모르겠습니다. 위 샘플 코드에서 movie_as.xlsx 파일이 현재 경로에 생성되지 않았다는 말씀이신가요?

import pandas as pd

df = pd.DataFrame([['1', '테스트'], ['2', '테스트']], columns=['number', 'test'])
df.to_excel('test.xlsx', index=False)

위의 코드는 엑셀저장 테스트용 코드입니다. 어떤 환경에서 실행을 하시는건지 모르겠습니다만 위 코드에서도 문제가 있다면 컴퓨터 환경에서 뭔가 문제가 있는걸로 판단됩니다. 코드의 오류는 제가 어느정도 확인해보고 말씀드릴수 있겠지만 컴퓨터 환경에 대해서 생기는 문제는 제가 알 수 있는 방법이 없습니다. pandas 를 재설치 해보시던가 파이썬 전체를 재설치 해보시는걸 추천합니다. 

0

lmj040423

실행을 해도 엑셀 파일이 뜨지 않습니다 ㅜㅜ

0

남박사

import requests
from bs4 import BeautifulSoup
# 엑셀에 저장하기 위해 필요한 라이브러리 임포트
import pandas

def get_movie_point(start, end=1):
    results = []
    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:  #다수의 평점
            # 번호
            number = tr.select_one("td.ac.num").text
            # 작성자
            writer = tr.select_one("td.num > a.author").text
            
            # td 의 title 클래스를 구합니다.
            tr_data = tr.select_one("td.title")

            # td class="title" 자식중 최초 a 태그안에 제목만 추출
            title = tr_data.select_one("a").text

            # td class="title" 자식중 div 태그 자식중 em 태그에 점수 추출
            point = tr_data.select_one("div.list_netizen_score > em").text

            # td class="title" 태그에서 a, div, br 태그 제거
            # extract() 함수는 태그와 태그의 내용까지 모두 제거합니다.
            [x.extract() for x in tr_data.select("a")]
            [x.extract() for x in tr_data.select("div")]
            [x.extract() for x in tr_data.select("br")]

            # 위에서 태그를 모두 제거한 tr_data에서 내용만 추출
            content = tr_data.text.strip()
            results.append([title, number, point, writer])
    return results


column = ["영화제목", "인덱스", "평점", "작성자"]
results = get_movie_point(1, 1)
print(len(results))
dataframe = pandas.DataFrame(results, columns=column)
#dataframe.to_csv("movie.csv", header=False, index=False)
dataframe.to_excel("movie_as.xlsx", 
                    sheet_name="네이버영화", 
                    columns=column,
                    header=True,
                    startrow=1
                    )

get_movie_point 함수에서 result.append() 에 데이터를 append 하여 추가 후 리턴하는거 부터는 기존의 강좌와 똑같습니다. 이 함수를 호출하여 리턴된 데이터를 pandas 의 DataFrame 로 변환 후 to_excel 함수를 사용하여 엑셀에 저장하는것 역시도 기존의 강좌와 똑같이 구현할 수 있습니다.

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