ازگر کے ساتھ گوگل نیوز کو کھرچنے کے لئے مرحلہ وار گائیڈ

تبصرے: 0

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

مرحلہ 1: ماحول کو ترتیب دینا

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

pip install requests 
pip install lxml

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

مرحلہ 2: ہدف URL اور XPath ڈھانچہ کو سمجھنا

ہم مندرجہ ذیل یو آر ایل میں گوگل نیوز پیج کو کھرچ رہے ہیں:

URL = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"

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

  • مین نیوز کنٹینر: //c-wiz[@jsrenderer="ARwRbe"]
  • اہم خبروں کا عنوان: //c-wiz[@jsrenderer="ARwRbe"]/c-wiz/div/article/a/text()
  • مین نیوز لنک: //c-wiz[@jsrenderer="ARwRbe"]/c-wiz/div/article/a/@href
  • متعلقہ خبروں کا کنٹینر: //c-wiz[@jsrenderer="ARwRbe"]/c-wiz/div/div/article/
  • متعلقہ خبروں کا عنوان: //c-wiz[@jsrenderer="ARwRbe"]/c-wiz/div/div/article/a/text()
  • متعلقہ خبروں کا لنک: //c-wiz[@jsrenderer="ARwRbe"]/c-wiz/div/div/article/a/@href

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

مرحلہ 3: گوگل نیوز کا مواد لانا

ہم درخواستوں کی لائبریری کا استعمال کرتے ہوئے گوگل نیوز پیج کے مواد کو لے کر شروع کریں گے۔ صفحہ کے مواد کو لانے کے لئے کوڈ یہ ہے:

import requests

url = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
response = requests.get(url)

if response.status_code == 200:
    page_content = response.content
else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}")

یہ کوڈ گوگل نیوز یو آر ایل کو گیٹ کی درخواست بھیجتا ہے اور صفحہ کے HTML مواد کو صفحہ_کونٹینٹ متغیر میں اسٹور کرتا ہے۔

مرحلہ 4: LXML کے ساتھ HTML مواد کی تجزیہ کرنا

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

from lxml import html

# Parse the HTML content
parser = html.fromstring(page_content)

مرحلہ 5: خبروں کا ڈیٹا نکالنا

گوگل نیوز اپنے مضامین کو مخصوص کنٹینرز میں منظم کرتا ہے۔ ہم پہلے ان کنٹینرز کو ان کے ایکس پاتھ کا استعمال کرتے ہوئے نکالیں گے اور پھر انفرادی خبروں کی سرخیاں اور لنکس نکالنے کے ل ان کے ذریعے تکرار کریں گے۔

اہم خبروں کے مضامین نکالنا

اہم خبروں کے مضامین مندرجہ ذیل ایکسپاتھ کے تحت واقع ہیں:

main_news_elements = parser.xpath('//c-wiz[@jsrenderer="ARwRbe"]')

اب ہم پہلے 10 درست عناصر کو لوپ کرسکتے ہیں اور عنوانات اور لنکس نکال سکتے ہیں:

news_data = []

for element in main_news_elements[:10]:
    title = element.xpath('.//c-wiz/div/article/a/text()')[0]
    link = "https://news.google.com" + element.xpath('.//c-wiz/div/article/a/@href')[0][1:]

    
    # Ensure data exists before appending to the list
    if title and link:
        news_data.append({
        "main_title": title,
        "main_link": link,
    })

ہر اہم نئے عنصر کے اندر متعلقہ مضامین نکالنا

اہم نیوز عنصر میں ذیلی ذیلی حصے ہیں جہاں متعلقہ خبریں موجود ہیں۔ ہم اسی طرح کے نقطہ نظر کا استعمال کرتے ہوئے ان کو نکال سکتے ہیں:

related_articles = []
related_news_elements = element.xpath('.//c-wiz/div/div/article')

for related_element in related_news_elements:
    related_title = related_element.xpath('.//a/text()')[0]
    related_link = "https://news.google.com" + related_element.xpath('.//a/@href')[0][1:]
    related_articles.append({"title": related_title, "link": related_link})

news_data.append({
    "main_title": title,
    "main_link": link,
    "related_articles": related_articles
})

مرحلہ 6: اعداد و شمار کو بطور JSON محفوظ کرنا

ڈیٹا نکالنے کے بعد ، ہم اسے بعد کے استعمال کے لئے JSON فائل میں محفوظ کرسکتے ہیں۔

import json

with open('google_news_data.json', 'w') as f:
    json.dump(news_data, f, indent=4)

اس کوڈ سے گوگل_ نیوز_ڈیٹا.جسن نامی ایک فائل تشکیل دی جائے گی جس میں تمام سکریپڈ نیوز کی سرخیاں اور ان کے متعلقہ لنکس شامل ہیں۔

پراکسیوں کا استعمال

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

اس ٹیوٹوریل کے ل you ، آپ درخواستوں میں ترمیم کرکے ایک پراکسی استعمال کرسکتے ہیں۔ کال کال:

proxies = {
    "http": "http://your_proxy_ip:port",
    "https": "https://your_proxy_ip:port",
}

response = requests.get(url, proxies=proxies)

اگر آپ کسی خدمت فراہم کنندہ کے ساتھ کام کر رہے ہیں جو پراکسی گردش کا انتظام کرتا ہے تو ، آپ کو صرف اپنی درخواستوں میں خدمت کو تشکیل دینے کی ضرورت ہے۔ فراہم کنندہ اپنے اختتام پر گردش اور آئی پی پول مینجمنٹ کو سنبھالے گا۔

درخواست کے ہیڈروں کو تخصیص کرنا

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

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': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    '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/127.0.0.0 Safari/537.36',
}

response = requests.get(url, headers=headers)

مکمل کوڈ مثال

یہاں تمام مراحل کو یکجا کرتے ہوئے مکمل کوڈ ہے:

import requests
import urllib3
from lxml import html
import json

urllib3.disable_warnings()

# URL and headers
url = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
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': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
   'sec-ch-ua-arch': '"x86"',
   'sec-ch-ua-bitness': '"64"',
   'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
   'sec-ch-ua-mobile': '?0',
   'sec-ch-ua-model': '""',
   'sec-ch-ua-platform': '"Linux"',
   'sec-ch-ua-platform-version': '"6.5.0"',
   'sec-ch-ua-wow64': '?0',
   '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/127.0.0.0 Safari/537.36',
}

# Proxies configuration (replace with your proxy details)
proxy = 'ip:port'
proxies = {
   "http": f"http://{proxy}",
   "https": f"https://{proxy}",
}

# Fetch the page content with the specified headers and proxies
response = requests.get(url, headers=headers, proxies=proxies, verify=False)

# Check if the request was successful
if response.status_code == 200:
   page_content = response.content
else:
   print(f"Failed to retrieve the page. Status code: {response.status_code}")
   exit()

# Parse the HTML content using lxml
parser = html.fromstring(page_content)

# Extract the main news and related articles
main_news_elements = parser.xpath('//*[@id="i10-panel"]/c-wiz/c-wiz')

# Initialize a list to store the extracted news data
news_data = []

# Loop through each main news element
for element in main_news_elements[:10]:
   # Extract the main news title and link
   title = element.xpath('.//c-wiz/div/article/a/text()')
   link = element.xpath('.//c-wiz/div/article/a/@href')

   # Initialize a list to store related articles for this main news
   related_articles = []

   # Extract related news elements within the same block
   related_news_elements = element.xpath('.//c-wiz/div/div/article')

   # Loop through each related news element and extract the title and link
   for related_element in related_news_elements:
       related_title = related_element.xpath('.//a/text()')[0]
       related_link = "https://news.google.com" + related_element.xpath('.//a/@href')[0][1:]
       related_articles.append({"title": related_title, "link": related_link})

   # Append the main news and its related articles to the news_data list
   if title is not None:
       news_data.append({
           "main_title": title,
           "main_link": f'https://news.google.com{link}',
           "related_articles": related_articles
       })
   else:
       continue


# Save the extracted data to a JSON file
with open("google_news_data.json", "w") as json_file:
   json.dump(news_data, json_file, indent=4)

print('Data extraction complete. Saved to google_news_data.json')

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

تبصرے:

0 تبصرے