Page d'accueil: https://program-board.com
Objectif final: extraire des données dans le but de créer une liste de films hautement évalués par groupe d'âge à partir de Filmarks. Dans cet article, nous extrayons des informations sur plusieurs éléments sur une page spécifique. Il n'y a qu'un seul film à extraire.
Comme précédemment, vérifiez le code source des informations que vous souhaitez extraire. Dans cet article, les informations suivantes sont extraites.
· Titre du film ・ Date de projection · Pays d'origine ・ Temps de projection ・ Genre (jusqu'à 3) ・ Star (évaluation) ·réalisé par ・ Scénario (jusqu'à 2 personnes) ・ Artistes (jusqu'à 3 personnes)
import requests
import bs4
import pandas as pd
#Obtenir des informations Web
url= 'https://filmarks.com/list/trend'
res = requests.get(url)
#Formatage HTML
soup = bs4.BeautifulSoup(res.text) #features='lxml')
Pour le moment, extrayez les informations Web du premier travail sur l'écran d'affichage.
infos = soup.select('div.p-movie-cassette__info')
#infos = infos.select('a.c-label')
movie = infos[0]
print('Nombre d'oeuvres:{}'.format(len(infos)))
print(movie.prettify())
Nous allons essayer d'extraire des informations pour plusieurs éléments à partir d'ici. Cependant, comme une erreur s'est produite, des essais et erreurs pour l'erreur sont également décrits.
Comme le code source était "un.c-label" pour extraire les informations du réalisateur de la même manière que la dernière fois, j'ai essayé d'extraire avec "a.c-label". Cependant, non seulement le réalisateur, mais aussi le scénario et le casting ont été extraits. Lors de la confirmation, le réalisateur, le script et le casting ont également été étiquetés avec «a.c-label» dans le code source.
Par conséquent, lors de l'organisation des informations extraites, il est nécessaire de concevoir comme le stockage en tant qu'élément de la liste. Le code d'extraction de plusieurs éléments est défini dans movie_info () dans le but d'organiser les informations extraites. Le code et le résultat de la sortie sont les suivants.
def movie_info(info):
#Pour la sortie
out_list = []
#Titre
title = info.select('h3.p-movie-cassette__title')[0].text
out_list.append(title)
#Date de la projection
release_date = info.select('span')[2].text
release_date = '{}/{}/{}'.format(release_date[0:4],release_date[5:7],release_date[8:10])
out_list.append(release_date)
#Pays d'origine
country = info.select('div.p-movie-cassette__other-info')[0].select('a')[0].text
out_list.append(country)
#Temps de dépistage
time = info.select('span')[3].text.replace('Minutes','')
out_list.append(time)
#Genre(Jusqu'à 3)
genre_list = ['-','-','-']
genre_web = info.select('div.p-movie-cassette__genre')[0].select('a')#Créer une liste de genre
for i in range(len(genre_web)):
genre_list.insert(i,genre_web[i].text)
out_list.append(genre_list[0])
out_list.append(genre_list[1])
out_list.append(genre_list[2])
#Étoile(Évaluation)
score = info.select('div.c-rating__score')[0].text
out_list.append(score)
#réalisé par
director= info.select('div.p-movie-cassette__people-wrap')[0].select('a')[0].text
out_list.append(director)
#Scénario(Jusqu'à 2 personnes)
scenario_list = ['-','-','-']
scenario_web = info.select('div.p-movie-cassette__people-wrap')[1].select('a')
for i in range(len(scenario_web)):
scenario_list.insert(i,scenario_web[i].text)
out_list.append(scenario_list[0])
out_list.append(scenario_list[1])
#Interprète(Jusqu'à 3 personnes)
cast_list = ['-','-','-']
cast_web = info.select('div.p-movie-cassette__people-wrap')[2].select('a')
for i in range(len(cast_web)):
cast_list.insert(i,cast_web[i].text)
out_list.append(cast_list[0])
out_list.append(cast_list[1])
out_list.append(cast_list[2])
return out_list
###################################
['Joker',
'2019/10/04',
'Amérique',
'122',
'Drame',
'Climat',
'Thriller en francais',
'4.4',
'Todd Phillips',
'Todd Phillips',
'-',
'Joaquin Phoenix',
'Robert de niro',
'-']
###################################
J'ai essayé d'extraire des informations sur plusieurs œuvres basées sur ce code, mais certaines œuvres n'avaient pas de script. Par conséquent, au lieu d'utiliser les éléments de la liste, modifiez-la pour qu'elle puisse être identifiée directement par des éléments tels que "script".
Recommended Posts