[PYTHON] Studieren von Web Scraping zum Extrahieren von Daten aus Filmarks # 2

Homepage: https://program-board.com

Endziel: Extrahieren Sie Daten, um eine Liste von Filmen zu erstellen, die nach Altersgruppen von Filmarks hoch bewertet werden. In diesem Dokument extrahieren wir Informationen zu mehreren Elementen auf einer bestimmten Seite. Es gibt nur einen Film zum Extrahieren.

Überprüfen Sie den Quellcode

Überprüfen Sie nach wie vor den Quellcode der Informationen, die Sie extrahieren möchten. In diesem Dokument werden die folgenden Informationen extrahiert.

· Filmtitel ・ Screening-Datum · Ursprungsland ・ Screening-Zeit ・ Genre (bis zu 3) ・ Stern (Bewertung) ·unter der Regie von ・ Drehbuch (bis zu 2 Personen) ・ Darsteller (bis zu 3 Personen)

import requests
import bs4
import pandas as pd

#Holen Sie sich Webinformationen
url= 'https://filmarks.com/list/trend'
res = requests.get(url)

#HTML-Formatierung
soup = bs4.BeautifulSoup(res.text) #features='lxml')

Extrahieren Sie Informationen für nur eine Arbeit

Extrahieren Sie vorerst die Webinformationen der ersten Arbeit auf dem Bildschirm.

infos = soup.select('div.p-movie-cassette__info')
#infos = infos.select('a.c-label')
movie = infos[0]
print('Anzahl der Arbeiten:{}'.format(len(infos)))
print(movie.prettify())
スクリーンショット-2019-10-05-18.51.04-1024x368.png

Extraktion mehrerer Elemente

Wir werden versuchen, Informationen für mehrere Artikel von hier zu extrahieren. Da jedoch ein Fehler aufgetreten ist, wird auch Versuch und Irrtum für den Fehler beschrieben.

Ein Fehler ist aufgetreten

Da der Quellcode "a.c-label" war, um die Informationen des Regisseurs auf die gleiche Weise wie beim letzten Mal zu extrahieren, habe ich versucht, mit "a.c-label" zu extrahieren. Es wurden jedoch nicht nur der Regisseur, sondern auch das Drehbuch und die Besetzung extrahiert. Nach der Bestätigung wurden der Regisseur, das Drehbuch und die Besetzung im Quellcode ebenfalls mit "a.c-label" gekennzeichnet.

スクリーンショット-2019-10-05-18.52.17-1024x156.png

Gegenmaßnahmen gegen Fehler

Daher ist es beim Organisieren der extrahierten Informationen erforderlich, diese beispielsweise als Element der Liste zu speichern. Der Code zum Extrahieren mehrerer Elemente wird in movie_info () definiert, um die extrahierten Informationen zu organisieren. Der Code und das Ausgabeergebnis sind wie folgt.

def movie_info(info):

    #Zur Ausgabe
    out_list = []
    
    #Titel
    title = info.select('h3.p-movie-cassette__title')[0].text
    out_list.append(title)
    
    #Screening-Datum
    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)

    #Ursprungsland
    country = info.select('div.p-movie-cassette__other-info')[0].select('a')[0].text
    out_list.append(country)

    #Screening-Zeit
    time = info.select('span')[3].text.replace('Protokoll','')
    out_list.append(time)
    
    #Genre(Bis zu 3)
    genre_list = ['-','-','-']
    
    genre_web = info.select('div.p-movie-cassette__genre')[0].select('a')#Erstellen einer Genre-Liste
    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])
    
    #Star(Auswertung)
    score = info.select('div.c-rating__score')[0].text
    out_list.append(score)
    
    #unter der Regie von
    director= info.select('div.p-movie-cassette__people-wrap')[0].select('a')[0].text
    out_list.append(director)
    
    #Drehbuch(Bis zu 2 Personen)
    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])
    
    #Künstler(Bis zu 3 Personen)
    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',
 'Amerika',
 '122',
 'Theater',
 'Klima',
 'Thriller',
 '4.4',
 'Todd Phillips',
 'Todd Phillips',
 '-',
 'Joaquin Phoenix',
 'Robert De Niro',
 '-']
###################################

Korrekturpunkte für das nächste Mal

Ich habe versucht, basierend auf diesem Code Informationen zu mehreren Werken zu extrahieren, aber einige Werke hatten kein Skript. Anstatt die Elemente der Liste zu verwenden, ändern Sie sie daher so, dass sie direkt durch Elemente wie "Skript" identifiziert werden können.

Recommended Posts

Studieren von Web Scraping zum Extrahieren von Daten aus Filmarks # 2
Ich habe nach Railway Kawayanagi aus den Daten gesucht
[Python] Fluss vom Web-Scraping zur Datenanalyse
Übergang von Baseball aus Daten gesehen
Scraping der Gewinndaten von Zahlen mit Docker
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Scraping mit Python - Holen Sie sich den Grundpreis eines Investment Trusts über das Web der Investment Trusts Association
Scraping Mitgliederbilder von der offiziellen Website der Sakamichi Group
Die Geschichte des Kopierens von Daten von S3 auf Googles TeamDrive
Scraping das Ergebnis von "Schedule-Kun"
[tensorflow, keras, mnist] Extrahieren Sie n Blätter für jedes Etikett aus den Daten von mnist und erstellen Sie 10 * n Datenblätter.
Aggregieren Sie die täglichen Treffer pro Sekunde aus den Webserver-Protokollen in Python
Festpunktbeobachtung bestimmter Daten im Web durch automatische Ausführung eines Webbrowsers auf dem Server (Ubuntu16.04) (2) -Web Scraping-
Überprüfen Sie die Zunahme / Abnahme der Bitmünzen für jede Adresse aus der Blockchain
Scraping mit Python-Get-Attributinformationen von Investment Trusts aus dem Web der Investment Trusts Association
Seaborn-Grundlagen für Anfänger ① Aggregiertes Diagramm der Anzahl der Daten (Countplot)
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
(Für Anwälte) Extrahieren Sie das Verhalten von Office-Software aus .evtx-Dateien
Existenz aus Sicht von Python
Web Scraping für Anfänger in Python (1)
Web Scraping für Wetterwarnbenachrichtigungen.
Web Scraping für Anfänger in Python (4) -1
Fassen Sie die wichtigsten Wachstumspunkte von Webdiensten und die Analysepunkte zusammen
Vergleich von R, Python, SAS, SPSS aus Sicht europäischer Datenwissenschaftler
Latein lernen zum Schreiben eines lateinischen Satzanalyseprogramms (Teil 1)
Eine Geschichte von einer Person, die von Anfang an auf Datenwissenschaftler abzielte
Rufen Sie die Paketliste des angegebenen Benutzers aus den in PyPI registrierten Paketen ab
Scraping mit Python - Den Grundpreis eines Investment Trusts von Yahoo! Finance erhalten
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python