ازگر کا استعمال کرتے ہوئے آئی ایم ڈی بی ڈیٹا کو کھرچنے کا طریقہ

تبصرے: 0

آج کی دنیا میں ، آن لائن سوشل پلیٹ فارمز جیسے آئی ایم ڈی بی سے ڈیٹا نکالنا تحقیق یا لطف اندوزی کے مقاصد کے لئے فلم سے متعلق بہت ضروری معلومات جمع کرنے کی طرف ایک موثر راستہ ثابت ہوسکتا ہے۔ اس ٹیوٹوریل میں ، ہم آئی ایم ڈی بی پر سرفہرست 250 فلموں کو پائیون کا استعمال کرتے ہوئے کھرچنے کے ذریعے چلیں گے اور فلم کے عنوانات ، مووی کے خلاصے ، ریٹنگز ، انواع اور بہت کچھ جیسی تفصیلات نکالیں گے۔

جب آئی ایم ڈی بی جیسی ویب سائٹوں کو کھرچتے ہو تو ، اس کا پتہ لگانے کے خطرے کو کم سے کم کرنے اور ڈیٹا کی بازیافت کو یقینی بنانے کے لئے کسی حقیقی صارف کے طرز عمل کی نقالی کرنا بہت ضروری ہے۔ یہاں کچھ حکمت عملی ہیں جن کو استعمال کیا جاسکتا ہے:

  1. آئی پی بلاک کرنے سے پرہیز کریں: ویب سائٹیں اکثر ان درخواستوں کی تعداد کو محدود کرتی ہیں جو سکریپنگ کو روکنے کے لئے ایک ہی IP ایڈریس سے کی جاسکتی ہیں۔ پراکسیوں کا استعمال کرکے ، آپ اپنی درخواستوں کو متعدد IP پتے پر پھیلاسکتے ہیں ، جس سے مسدود ہونے کے خطرے کو کم کیا جاسکتا ہے۔
  2. گمنامی کو یقینی بنائیں: پراکسی آپ کے اصلی IP پتے کو نقاب پوش کرتے ہیں ، جو نہ صرف آپ کی رازداری کو بچانے میں مدد کرتا ہے بلکہ ویب سائٹوں کو بھی آپ کو کھرچنے کی سرگرمیوں کا سراغ لگانا مشکل بناتا ہے۔
  3. رفتار کی حدود کے ساتھ تعمیل کریں: متعدد پراکسیوں کے ذریعہ درخواستوں کو تقسیم کرنا آپ کے سوالات کی تعدد کو سنبھالنے میں مدد کرسکتا ہے ، ویب سائٹ کی شرح کی حدود میں رہنا اور اینٹی سکریپنگ اقدامات کو متحرک کرنے کے امکانات کو کم کرنے میں مدد کرسکتا ہے۔
  4. بائی پاس سرور شبہات: ایک عام براؤزر کی نقالی کرنے والے ہیڈرز کو شامل کرنا ، جیسے صارف ایجنٹ ، آپ کی کھرچنے کی درخواستوں کو عام صارف کی درخواستوں کی طرح ظاہر کرسکتا ہے۔ یہ سرور کو آپ کی سرگرمیوں کو مشکوک سمجھنے سے روک سکتا ہے۔

مرحلہ 1: کھرچنی کی تیاری

اس ٹیوٹوریل کے ل we ، ہم HTML کو پارس کرنے کے لئے ویب مواد ، LXML ، اور اختیاری طور پر ، JSON لائبریری کو ضرورت پڑنے پر فارمیٹڈ ڈیٹا کو سنبھالنے کے لئے ویب مواد ، LXML ڈاؤن لوڈ کرنے کے لئے ازگر کی درخواستوں کی لائبریری کا استعمال کریں گے۔ پہلے ، مطلوبہ لائبریریوں کو انسٹال کریں۔

لائبریریوں کو انسٹال کرنا

شروع کرنے سے پہلے ، آپ کو ضروری ازگر لائبریریوں کو انسٹال کرنے کی ضرورت ہے۔ ان کو انسٹال کرنے کے لئے اپنے ٹرمینل میں درج ذیل کمانڈ چلائیں:


pip install requests lxml

ان لائبریریوں کا استعمال HTTP درخواستیں کرنے ، HTML مواد کو پارس کرنے ، اور نکالا ہوا ڈیٹا پر کارروائی کرنے کے لئے استعمال کیا جائے گا۔

HTTP درخواست کے ہیڈروں کی تشکیل

ہماری درخواستوں کو ایک حقیقی ویب براؤزر سے مشابہت کرنے کے ل ، ، اس کے مطابق HTTP ہیڈر مرتب کرنا بہت ضروری ہے۔ یہاں ایک مثال ہے کہ آپ اپنے اسکرپٹ میں ان ہیڈر کو کس طرح تشکیل دے سکتے ہیں:


import requests

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',  # Do Not Track header
    'pragma': 'no-cache',
    'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
    '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/129.0.0.0 Safari/537.36',
}

response = requests.get('https://www.imdb.com/chart/top/', headers=headers)

پراکسی ترتیب دینا

بڑے پیمانے پر سکریپنگ کے لئے پراکسی مفید ہیں۔ وہ آپ کی درخواستوں کو متعدد آئی پی ایس میں تقسیم کرکے مسدود ہونے سے بچنے میں مدد کرتے ہیں۔ یہاں آپ ایک پراکسی کو شامل کرسکتے ہیں:


proxies = {
    "http": "http://your_proxy_server",
    "https": "https://your_proxy_server"
}

response = requests.get('https://www.imdb.com/chart/top/', headers=headers, proxies=proxies)

"آپ کے_پروکسی_سرور" کو اصل پراکسی تفصیلات کے ساتھ تبدیل کریں جس تک آپ تک رسائی حاصل ہے۔ اس سے یہ یقینی بنتا ہے کہ آپ کا IP پتہ بے نقاب نہیں ہے ، اور یہ مسدود ہونے سے بچنے میں مدد کرتا ہے۔

مرحلہ 2: HTML مواد کی تجزیہ کرنا

ویب پیج کے مواد کو لانے کے بعد ، ہمیں فلم کی تفصیلات نکالنے کے ل it اس کی تجزیہ کرنے کی ضرورت ہے۔ ہم ساختہ اعداد و شمار کو سنبھالنے کے لئے HTML اور JSON کی تجزیہ کرنے کے لئے LXML کا استعمال کریں گے:


from lxml.html import fromstring
import json

# Parse the HTML response
parser = fromstring(response.text)

# Extract the JSON-LD data (structured data) from the script tag
raw_data = parser.xpath('//script[@type="application/ld+json"]/text()')[0]
json_data = json.loads(raw_data)

# Now we have structured movie data in JSON format

مرحلہ 3: مووی کی تفصیلات نکالنا

آئی ایم ڈی بی ٹاپ 250 صفحے میں ایچ ٹی ایم ایل میں سرایت شدہ ساختی اعداد و شمار شامل ہیں ، جس کو XPath کا استعمال کرتے ہوئے آسانی سے رسائی حاصل کی جاسکتی ہے اور JSON کے بطور تجزیہ کیا جاسکتا ہے۔ ہم فلم کی تفصیلات جیسے نام ، تفصیل ، درجہ بندی ، انواع ، اور بہت کچھ نکالیں گے:


movies_details = json_data.get('itemListElement')

# Loop through the movie data
movies_data = []
for movie in movies_details:
    movie_type = movie['item']['@type']
    url = movie['item']['url']
    name = movie['item']['name']
    description = movie['item']['description']
    image = movie['item']['image']
    bestRating = movie['item']['aggregateRating']['bestRating']
    worstRating = movie['item']['aggregateRating']['worstRating']
    ratingValue = movie['item']['aggregateRating']['ratingValue']
    ratingCount = movie['item']['aggregateRating']['ratingCount']
    contentRating = movie['item'].get('contentRating')
    genre = movie['item']['genre']
    duration = movie['item']['duration']
    
    # Append each movie's data to the list
    movies_data.append({
        'movie_type': movie_type,
        'url': url,
        'name': name,
        'description': description,
        'image': image,
        'bestRating': bestRating,
        'worstRating': worstRating,
        'ratingValue': ratingValue,
        'ratingCount': ratingCount,
        'contentRating': contentRating,
        'genre': genre,
        'duration': duration
    })

مرحلہ 4: ڈیٹا کو ذخیرہ کرنا

ایک بار جب ڈیٹا نکالا جاتا ہے تو ، اس کی شکل میں اس کو اسٹور کرنا ضروری ہے جس کا تجزیہ کرنا آسان ہے۔ اس معاملے میں ، ہم اسے پانڈاس لائبریری کا استعمال کرتے ہوئے سی ایس وی فائل میں محفوظ کریں گے:


import pandas as pd

# Convert the list of movies to a pandas DataFrame
df = pd.DataFrame(movies_data)

# Save the data to a CSV file
df.to_csv('imdb_top_250_movies.csv', index=False)

print("IMDB Top 250 movies data saved to imdb_top_250_movies.csv")

مکمل کوڈ

آئی ایم ڈی بی کی ٹاپ 250 فلموں کو کھرچنے کا مکمل کوڈ یہ ہے:


import requests
from lxml.html import fromstring
import json
import pandas as pd

# Define headers for the request
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',
    'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
    '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/129.0.0.0 Safari/537.36',
}

# Optionally, set up proxies
proxies = {
    "http": "http://your_proxy_server",
    "https": "https://your_proxy_server"
}

# Send the request to the IMDB Top 250 page
response = requests.get('https://www.imdb.com/chart/top/', headers=headers, proxies=proxies)

# Parse the HTML response
parser = fromstring(response.text)

# Extract the JSON-LD data
raw_data = parser.xpath('//script[@type="application/ld+json"]/text()')[0]
json_data = json.loads(raw_data)

# Extract movie details
movies_details = json_data.get('itemListElement')

movies_data = []
for movie in movies_details:
    movie_type = movie['item']['@type']
    url = movie['item']['url']
    name = movie['item']['name']
    description = movie['item']['description']
    image = movie['item']['image']
    bestRating = movie['item']['aggregateRating']['bestRating']
    worstRating = movie['item']['aggregateRating']['worstRating']
    ratingValue = movie['item']['aggregateRating']['ratingValue']
    ratingCount = movie['item']['aggregateRating']['ratingCount']
    contentRating = movie['item'].get('contentRating')
    genre = movie['item']['genre']
    duration = movie['item']['duration']
    
    movies_data.append({
        'movie_type': movie_type,
        'url': url,
        'name': name,
        'description': description,
        'image': image,
        'bestRating': bestRating,
        'worstRating': worstRating,
        'ratingValue': ratingValue,
        'ratingCount': ratingCount,
        'contentRating': contentRating,
        'genre': genre,
        'duration': duration
    })

# Save the data to a CSV file
df = pd.DataFrame(movies_data)
df.to_csv('imdb_top_250_movies.csv', index=False)
print("IMDB Top 250 movies data saved to imdb_top_250_movies.csv")

اخلاقی تحفظات

کسی بھی ویب سائٹ کو ختم کرنے سے پہلے ، اخلاقی اور قانونی مسائل پر غور کرنا ضروری ہے:

  • روبوٹس ڈاٹ ٹی ایس ٹی کا احترام کریں: آئی ایم ڈی بی کے روبوٹس ڈاٹ ٹی ایکس فائل کو چیک کریں کہ ویب سائٹ کے کن حصوں کو کھرچنے کے لئے اجازت ہے۔ ہمیشہ ویب سائٹ کی پالیسیوں پر عمل کریں۔
  • سرور کو اوورلوڈ کرنے سے پرہیز کریں: سرور پر غیر ضروری بوجھ ڈالنے سے بچنے کے ل اپنی درخواستوں کی فریکوئنسی کو محدود کرکے ذمہ داری کے ساتھ ڈیٹا کو کھرچنا۔
  • خدمت کی شرائط کا احترام: اس بات کو یقینی بنائیں کہ کھرچنے سے IMDB کی خدمت کی شرائط کی خلاف ورزی نہیں ہوتی ہے۔

ہمیشہ قواعد کو ذہن میں رکھیں اور جائز مقاصد کے لئے ویب سکریپنگ کا استعمال کریں۔

تبصرے:

0 تبصرے