حالیہ خبروں کی سرخیوں کو جمع کرنے ، خبروں کے رجحانات کی نگرانی ، اور موجودہ معاملات پر جذبات کے تجزیے کو انجام دینے میں ، گوگل نیوز کو ختم کرنا ایک انمول ٹول ثابت ہوتا ہے۔ اس مضمون میں ، ہم آپ کو ازگر کے ذریعہ گوگل نیوز کو کھرچنے کے عمل میں رہنمائی کریں گے۔ ہم صفحہ کے مواد کو حاصل کرنے کے لئے درخواستوں کی لائبریری کو ملازمت دیں گے۔ HTML دستاویزات کی تجزیہ کرنے اور ضرورت کے اعداد و شمار کو نکالنے کے لئے LXML۔ اس ٹیوٹوریل کے اختتام تک ، آپ سیکھیں گے کہ گوگل نیوز سے خبروں کی سرخیاں اور ان کے متعلقہ روابط کو ساختی JSON فارمیٹ میں کیسے نکالیں گے۔
اس سے پہلے کہ ہم شروع کریں ، اس بات کو یقینی بنائیں کہ آپ نے اپنے سسٹم پر ازگر انسٹال کرلیا ہے۔ آپ مندرجہ ذیل کمانڈز چلا کر مطلوبہ لائبریریوں کو انسٹال کرسکتے ہیں:
pip install requests
pip install lxml
یہ لائبریریاں ہمیں HTTP درخواستیں بنانے اور ویب پیج کے HTML مواد کی تجزیہ کرنے کی اجازت دیں گی۔
ہم مندرجہ ذیل یو آر ایل میں گوگل نیوز پیج کو کھرچ رہے ہیں:
URL = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
اس صفحے میں متعدد خبریں ہیں ، جن میں سے ہر ایک مرکزی سرخی اور متعلقہ مضامین کے ساتھ ہے۔ ان اشیاء کے لئے ایکس پاتھ ڈھانچہ مندرجہ ذیل ہے:
گوگل نیوز کا ایچ ٹی ایم ایل ڈھانچہ مختلف صفحات پر مستقل رہتا ہے ، اس بات کو یقینی بناتا ہے کہ مخصوص ایکسپاتھ عناصر عالمی سطح پر قابل اطلاق ہوں۔
ہم درخواستوں کی لائبریری کا استعمال کرتے ہوئے گوگل نیوز پیج کے مواد کو لے کر شروع کریں گے۔ صفحہ کے مواد کو لانے کے لئے کوڈ یہ ہے:
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 مواد کو صفحہ_کونٹینٹ متغیر میں اسٹور کرتا ہے۔
HTML مواد کو ہاتھ میں رکھنے کے ساتھ ، ہم صفحہ کی تجزیہ کرنے اور خبروں کی سرخیاں اور لنکس نکالنے کے لئے LXML استعمال کرسکتے ہیں۔
from lxml import html
# Parse the HTML content
parser = html.fromstring(page_content)
گوگل نیوز اپنے مضامین کو مخصوص کنٹینرز میں منظم کرتا ہے۔ ہم پہلے ان کنٹینرز کو ان کے ایکس پاتھ کا استعمال کرتے ہوئے نکالیں گے اور پھر انفرادی خبروں کی سرخیاں اور لنکس نکالنے کے ل ان کے ذریعے تکرار کریں گے۔
اہم خبروں کے مضامین مندرجہ ذیل ایکسپاتھ کے تحت واقع ہیں:
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
})
ڈیٹا نکالنے کے بعد ، ہم اسے بعد کے استعمال کے لئے 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