नेटफ़्लिक्स से डेटा प्राप्त करने पर फिल्मों और टीवी श्रृंखलाओं के शीर्षक, रिलीज़ की तारीखें, सामग्री की श्रेणियाँ और अवलोकन जैसी गहन जानकारियाँ मिल सकती हैं। यह लेख दिखाता है कि Python, requests और lxml का उपयोग करके कई Netflix मूवी पृष्ठों से डेटा कैसे निकाला जाता है। चूंकि Netflix मूवी डेटा के लिए कोई खुला API प्रदान नहीं करता, स्क्रैपिंग हमें सिफ़ारिशों, सामग्री विश्लेषण और अन्य अनुप्रयोगों के लिए मूल्यवान डेटा एकत्र करने की सुविधा देती है।
शुरू करने के लिए, सुनिश्चित करें कि requests और lxml लाइब्रेरी इंस्टॉल हैं। अपनी पर्यावरण तैयार करने के लिए निम्नलिखित कमांड का उपयोग करें:
pip install requests
pip install lxml
ये लाइब्रेरी Netflix पृष्ठों को HTTP अनुरोध भेजने और आवश्यक डेटा निकालने के लिए HTML सामग्री पार्स करने में अनिवार्य हैं।
Netflix पृष्ठों तक पहुँचने के लिए हमें URL की एक सूची की आवश्यकता होती है, जिन्हें हम मूवी विवरण प्राप्त करने के लिए क्रमवार रूप से एक्सेस करेंगे। यह ट्यूटोरियल प्रत्येक निर्दिष्ट पृष्ठ URL से Netflix की मूवी का शीर्षक, वर्ष, अवधि, विवरण, शैली और अन्य जानकारी स्क्रैप करेगा।
Netflix कड़े एंटी-बॉट उपाय लागू करता है, इसलिए सही हेडर और आवश्यकता पड़ने पर प्रॉक्सी का उपयोग पहचान से बचने में सहायक होता है। इस स्क्रिप्ट में, हम User-Agent, भाषा प्राथमिकताएँ और अन्य पैरामीटर सेट करके असली ब्राउज़र का अनुकरण करते हैं, जिससे हमारे अनुरोध अधिक विश्वसनीय दिखाई देते हैं।
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',
}
response = requests.get(url, headers=headers, proxies=proxies)
हम नेटफ्लिक्स मूवी URL की एक सूची निर्दिष्ट करते हैं, जिसे हमारी स्क्रिप्ट डेटा निकालने के लिए पुनरावृत्ति करेगी।
urls_list = [
'Https link',
'Https link'
]
प्रत्येक URL को requests.get() मेथड से एक्सेस किया जाता है, पहचान से बचने के लिए हेडर पास करते हुए।
response = requests.get(url, headers=headers)
lxml का उपयोग करते हुए, हम XPath अभिव्यक्तियों का उपयोग करके डेटा को नेविगेट करने और निकालने के लिए HTML प्रतिक्रिया को पार्स करते हैं।
from lxml.html import fromstring
parser = fromstring(response.text)
XPath का उपयोग करते हुए, हम आवश्यक फिल्म विवरण जैसे शीर्षक, वर्ष, अवधि, विवरण, शैली, उपशीर्षक, और बहुत कुछ कैप्चर करते हैं। नीचे बताया गया है कि प्रत्येक क्षेत्र को कैसे निकाला जाता है:
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()'))
हम प्रत्येक फिल्म के डेटा को एक शब्दकोश में संग्रहीत करते हैं और इसे एक सूची में जोड़ते हैं। यह दृष्टिकोण डेटा को संगठित और CSV में सहेजे जाने के लिए तैयार रखता है।
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)
अंत में, सभी URL के माध्यम से पुनरावृत्त करने के बाद, हम संचित डेटा को CSV फ़ाइल में लिखते हैं।
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)
पूरा कोड हेडर और प्रॉक्सी सेटअप के साथ सभी चरणों को जोड़ता है।
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')
पायथन के साथ नेटफ्लिक्स डेटा को स्क्रैप करना एक आधिकारिक एपीआई के बिना सामग्री विवरण तक पहुंचने का एक व्यावहारिक तरीका प्रदान करता है। हेडर, प्रॉक्सी और पार्सिंग तकनीकों का उपयोग करके, हम प्रभावी रूप से मूल्यवान डेटा को इकट्ठा करते हैं और बचाते हैं। इस स्क्रिप्ट को विभिन्न स्ट्रीमिंग एनालिटिक्स, सिफारिशों या सामग्री की निगरानी के लिए अनुकूलित किया जा सकता है, जिससे आपको व्यापक अनुप्रयोगों के लिए नेटफ्लिक्स डेटा का उपयोग करने में मदद मिलती है।
टिप्पणियाँ: 0