CoderCastrov logo
CoderCastrov
Питон

Парсинг (скрапинг) данных о кассовых сборах фильмов в Корее

Парсинг (скрапинг) данных о кассовых сборах фильмов в Корее
просмотров
1 мин чтение
#Питон

Парсинг (скрапинг) - это код на Python, который собирает данные о рейтинге кассовых сборов фильмов в Корее в 2005-2006 годах. Я собираю URL изображений и названия фильмов с веб-сайта Naver.

Данные о продажах и кассовых сборах получаются с http://www.kobis.or.kr/

#=================================

import requests
from bs4 import BeautifulSoup
import pprint as ppr
from datetime import date
import pandas
import pandas as pd
import csv
import time
import re
#=================================

'''
https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cnt&date=20181019
https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cnt&date=20181019&tg=18
https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cnt&tg=18&date=20181017
#old_content > table > tbody > tr:nth-child(1)
'''

dt_index = pandas.date_range(start='20050524', end='20061230',freq='W-MON')
# pandas.date_range(start='20160901', end='20161031',freq='W-MON')
# Собираем все понедельники в указанном периоде
# type(dt_index) => DatetimeIndex
# DatetimeIndex => list(str)
dt_list = dt_index.strftime("%Y%m%d").tolist()
url = "https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cnt&tg=0&date="

a=[]

for i in dt_list :
    target_url = url + str(i)
    print(target_url)
    html = requests.get(target_url)
    bs_obj = BeautifulSoup(html.text, "html.parser")
    value = [x for x in bs_obj.select("tbody > tr")]
    temp_info = dict() # тип словаря
    for v in value:
        rank, title = v.find("td", {"class":"ac"}), v.find("td", {"class":"title"})
        try :
            if rank and title:
                t = "{0:s}".format(title.select_one("div > a").attrs['title']) # Название фильма
                e = title.select_one("div > a").attrs['href'] 
                each_raw = requests.get("https://movie.naver.com"+e,
                                        headers = {"User-Agent" : "Mozilla/5.0"})
                each_html = BeautifulSoup(each_raw.text, 'html.parser')
                # poster : div.mv_info_area div.poster img
                poster = each_html.select_one("div.mv_info_area div.poster img")
                poster_src = poster.attrs["src"]
                a.append([t,poster_src])
        except AttributeError as e:
            print(e)
            pass
time.sleep(1)

data = pd.DataFrame(a)