نیا سپریوس میڈیم-آرٹیکلز-استعمال کرنے والے پوٹخون

تبصرے: 0

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

ضروریات

اس ٹیوٹوریل کے ل ، ہم اس مضمون کو میڈیم پر کھرچ رہے ہیں: "9 ازگر بلٹ ان سجاوٹ جو آپ کے کوڈ کو نمایاں طور پر بہتر بناتے ہیں"۔

شروع کرنے سے پہلے ، درج ذیل لائبریریوں کو انسٹال کریں:

  • Requests: میڈیم پر HTTP درخواستیں بھیجنے کے لئے۔
  • lxml: HTML مواد کو پارس کرنے کے لئے۔
  • Pandas: ڈیٹا کو CSV فائل میں محفوظ کرنے کے لئے۔

انہیں مندرجہ ذیل احکامات کے ساتھ انسٹال کریں:


pip install requests
pip install lxml 
pip install pandas

ہیڈر اور پراکسیوں کی اہمیت کو سمجھنا

میڈیم غیر مجاز سکریپنگ کو روکنے کے لئے بوٹ کا پتہ لگانے کی تکنیک کا استعمال کرتا ہے۔ بوٹ کا پتہ لگانے سے بچنے اور ذمہ دار سکریپنگ کے ل proper مناسب ہیڈر اور پراکسی اہم ہیں۔

ہیڈر : یہ ایک درخواست کی تقلید کرتے ہیں گویا یہ کسی حقیقی براؤزر سے آرہا ہے۔ ان میں براؤزر کی قسم ، قبول شدہ مواد کی اقسام ، اور کیچنگ سلوک جیسی معلومات شامل ہیں۔


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': '"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',
}

پراکسی : پراکسی آپ کے IP پتے کو نقاب پوش کرسکتے ہیں ، اور وقتا فوقتا گھومتے ہیں تاکہ میڈیم کے ذریعہ درخواستوں کو مسدود کرنے کا امکان کم ہوجائے۔ یہاں آئی پی ایڈریس کی توثیق کے ساتھ استعمال کرنے کی ایک مثال ہے:


proxies = {
    'http': 'IP:PORT',
    'https': 'IP:PORT'
}

response = requests.get(
 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017',
    headers=headers,
    proxies=proxies
)

میڈیم کو درخواست بھیجنا

ہیڈرز کو ترتیب دینے اور آرٹیکل یو آر ایل کو درخواست بھیجنے کا طریقہ یہ ہے:


import requests

# Headers to simulate a real browser 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',
    'priority': 'u=0, i',
    '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',
}

url = 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017'
response = requests.get(url, headers=headers)

ڈیٹا نکالنا

ایک بار جب ہمارے پاس صفحہ کا مواد ہوجائے تو ، ہم اس کی تجزیہ کرسکتے ہیں اور متعلقہ معلومات نکال سکتے ہیں۔

HTML مواد کو پارس کرنا

ہم HTML ردعمل کی تجزیہ کرنے اور مخصوص عناصر نکالنے کے لئے LXML کا استعمال کریں گے۔ یہ کرنے کا طریقہ یہ ہے:


from lxml.html import fromstring

parser = fromstring(response.text)

# Extract data
title = parser.xpath('//h1[@data-testid="storyTitle"]/text()')[0]
author = parser.xpath('//a[@data-testid="authorName"]/text()')[0]
publication_name = parser.xpath('//a[@data-testid="publicationName"]/p/text()')[0]
publication_date = parser.xpath('//span[@data-testid="storyPublishDate"]/text()')[0]
content = '\n '.join(parser.xpath('//div[@class="ci bh ga gb gc gd"]/p/text()'))
auth_followers = parser.xpath('//span[@class="pw-follower-count bf b bg z bk"]/a/text()')[0]
sub_title = parser.xpath('//h2[@id="1de6"]/text()')[0]

اب ، ہم تمام نکالے ہوئے ڈیٹا کو رکھنے کے لئے ایک لغت بنائیں گے۔ اس سے CSV فائل کو بچانا آسان ہوجاتا ہے۔


# Save data in a dictionary
article_data = {
    'Title': title,
    'Author': author,
    'Publication': publication_name,
    'Date': publication_date,
    'Followers': auth_followers,
    'Subtitle': sub_title,
    'Content': content,
}

print(article_data)

CSV فائل میں ڈیٹا کی بچت

آخر میں ، مزید تجزیہ یا ریکارڈ کیپنگ کے لئے ڈیٹا کو CSV فائل میں محفوظ کریں۔


import pandas as pd

# Convert dictionary to DataFrame and save as CSV
df = pd.DataFrame([article_data])
df.to_csv('medium_article_data.csv', index=False)
print("Data saved to medium_article_data.csv")

مکمل کوڈ

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


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

# Headers to mimic a browser
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': '"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',
}


proxies = {
    'http': 'IP:PORT',
    'https': 'IP:PORT'
}

# Requesting the page
url = 'https://medium.com/techtofreedom/9-python-built-in-decorators-that-optimize-your-code-significantly-bc3f661e9017'
response = requests.get(url, headers=headers, proxies=proxies)

# Parsing the page
parser = fromstring(response.text)

# Extract data
title = parser.xpath('//h1[@data-testid="storyTitle"]/text()')[0]
author = parser.xpath('//a[@data-testid="authorName"]/text()')[0]
publication_name = parser.xpath('//a[@data-testid="publicationName"]/p/text()')[0]
publication_date = parser.xpath('//span[@data-testid="storyPublishDate"]/text()')[0]
content = '\n '.join(parser.xpath('//div[@class="ci bh ga gb gc gd"]/p/text()'))
auth_followers = parser.xpath('//span[@class="pw-follower-count bf b bg z bk"]/a/text()')[0]
sub_title = parser.xpath('//h2[@id="1de6"]/text()')[0]

# Saving data
article_data = {
    'Title': title,
    'Author': author,
    'Publication': publication_name,
    'Date': publication_date,
    'Followers': auth_followers,
    'Subtitle': sub_title,
    'Content': content,
}

# Save to CSV
df = pd.DataFrame([article_data])
df.to_csv('medium_article_data.csv', index=False)
print("Data saved to medium_article_data.csv")

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

تبصرے:

0 تبصرے