Das Sammeln von Daten aus Netflix kann detaillierte Details zu Filmen und Fernsehserien liefern, einschließlich Elementen wie Titeln, Veröffentlichungsdaten, Inhaltskategorien und Inhaltsübersichten. Dieser Artikel zeigt, wie man mit Python, Requests und lxml Daten aus mehreren Netflix-Filmseiten extrahieren kann. Da Netflix keine offene API für Filmdaten bereitstellt, können wir durch Scraping wertvolle Inhaltsdaten sammeln, die Empfehlungen, Inhaltsanalysen und andere Anwendungen unterstützen können.
Stellen Sie zunächst sicher, dass die Bibliotheken requests und lxml installiert sind. Verwenden Sie die folgenden Befehle, um Ihre Umgebung einzurichten:
pip install requests
pip install lxml
Diese Bibliotheken sind für das Senden von HTTP-Anfragen an die Netflix-Seiten und das Parsen von HTML-Inhalten zur Extraktion der erforderlichen Daten unerlässlich.
Um auf Netflix-Seiten zuzugreifen, benötigen wir eine Liste von URLs, die wir durchlaufen, um Filmdetails abzurufen. In diesem Tutorial werden der Filmtitel, das Jahr, die Dauer, die Beschreibung, das Genre und mehr von jeder angegebenen Seiten-URL von Netflix abgerufen.
Netflix wendet strenge Anti-Bot-Maßnahmen an, so dass die Verwendung korrekter Kopfzeilen und Proxys (falls erforderlich) eine Entdeckung verhindern kann. In diesem Skript imitieren wir einen echten Browser, indem wir benutzerdefinierte Kopfzeilen mit einem User-Agent, Spracheinstellungen und anderen Parametern einrichten, damit unsere Anfragen legitimer aussehen.
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
}
Bei Bedarf können Proxys hinzugefügt werden, um Anfragen von verschiedenen IP-Adressen aus zu stellen, was die Wahrscheinlichkeit, dass eine Kennzeichnung erfolgt, weiter verringert. Beispiel für die Integration eines Proxys mit IP-Adressen-Authentifizierung:
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
response = requests.get(url, headers=headers, proxies=proxies)
Wir geben eine Liste von Netflix-Film-URLs an, die unser Skript durchläuft, um Daten zu extrahieren.
urls_list = [
'Https link',
'Https link'
]
Auf jede URL wird mit der Methode requests.get() zugegriffen, wobei die Kopfzeilen übergeben werden, um eine Entdeckung zu vermeiden.
response = requests.get(url, headers=headers)
Mit lxml wird die HTML-Antwort geparst, um mit XPath-Ausdrücken zu navigieren und Daten zu extrahieren.
from lxml.html import fromstring
parser = fromstring(response.text)
Mit XPath erfassen wir wichtige Filmdetails wie Titel, Jahr, Dauer, Beschreibung, Genre, Untertitel und mehr. Nachfolgend sehen Sie, wie jedes Feld extrahiert wird:
title = parser.xpath('//h1[@class="title-title"]/text()')[0]
year = parser.xpath('//span[@data-uia="item-year"]/text()')[0]
duration = parser.xpath('//span[@class="duration"]/text()')[0]
description = parser.xpath('//div[@class="title-info-synopsis"]/text()')[0]
maturity_number = parser.xpath('//span[@class="maturity-number"]/text()')[0]
starring = parser.xpath('//span[@data-uia="info-starring"]/text()')[0]
genre = parser.xpath('//a[@data-uia="item-genre"]/text()')[0]
genres = parser.xpath('//span[@data-uia="more-details-item-genres"]/a/text()')
subtitles = ''.join(parser.xpath('//span[@data-uia="more-details-item-subtitle"]/text()'))
audio = ''.join(parser.xpath('//span[@data-uia="more-details-item-audio"]/text()'))
Wir speichern die Daten der einzelnen Filme in einem Wörterbuch und fügen sie an eine Liste an. Auf diese Weise bleiben die Daten organisiert und können im CSV-Format gespeichert werden.
data = {
'title': title,
'year': year,
'duration': duration,
'description': description,
'maturity_number': maturity_number,
'starring': starring,
'genre': genre,
'genres': genres,
'subtitles': subtitles,
'audio': audio
}
extracted_data.append(data)
Nachdem wir alle URLs durchgegangen sind, schreiben wir die gesammelten Daten in eine CSV-Datei.
import csv
with open('netflix_data.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=extracted_data[0].keys())
writer.writeheader()
writer.writerows(extracted_data)
Der vollständige Code kombiniert alle Schritte mit Headern und Proxy-Einrichtung.
import requests
from lxml.html import fromstring
import csv
urls_list = [
'Https link',
'Https link'
]
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
}
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'http://your_proxy_address:port',
}
extracted_data = []
for url in urls_list:
response = requests.get(url, headers=headers, proxies=proxies)
parser = fromstring(response.text)
title = parser.xpath('//h1[@class="title-title"]/text()')[0]
year = parser.xpath('//span[@data-uia="item-year"]/text()')[0]
duration = parser.xpath('//span[@class="duration"]/text()')[0]
description = parser.xpath('//div[@class="title-info-synopsis"]/text()')[0]
maturity_number = parser.xpath('//span[@class="maturity-number"]/text()')[0]
starring = parser.xpath('//span[@data-uia="info-starring"]/text()')[0]
genre = parser.xpath('//a[@data-uia="item-genre"]/text()')[0]
genres = parser.xpath('//span[@data-uia="more-details-item-genres"]/a/text()')
subtitles = ''.join(parser.xpath('//span[@data-uia="more-details-item-subtitle"]/text()'))
audio = ''.join(parser.xpath('//span[@data-uia="more-details-item-audio"]/text()'))
data = {
'title': title,
'year': year,
'duration': duration,
'description': description,
'maturity_number': maturity_number,
'starring': starring,
'genre': genre,
'genres': genres,
'subtitles': subtitles,
'audio': audio
}
extracted_data.append(data)
with open('netflix_data.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=extracted_data[0].keys())
writer.writeheader()
writer.writerows(extracted_data)
print('saved into netflix_data.csv')
Das Scraping von Netflix-Daten mit Python bietet eine praktische Möglichkeit, auf Inhaltsdetails zuzugreifen, ohne eine offizielle API zu nutzen. Durch die Verwendung von Headern, Proxies und Parsing-Techniken sammeln und speichern wir effektiv wertvolle Daten. Dieses Skript kann für verschiedene Streaming-Analysen, Empfehlungen oder die Überwachung von Inhalten angepasst werden und hilft Ihnen, Netflix-Daten für breitere Anwendungen zu nutzen.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0