جب امیج ڈیٹا سیٹ تیار کرتے وقت یاہو امیج کی تلاش سے تصاویر کو کھرچنا ضروری ہے۔ یہ گائیڈ وضاحت کرتا ہے کہ کس طرح یاہو امیج کی تلاش سے ازگر کا استعمال کرتے ہوئے تصاویر کو کھرچنے کے ساتھ ساتھ HTML تجزیہ کرنے کی تکنیک کے لئے LXML کے ساتھ مل کر درخواستوں کی لائبریری۔ یہ یاہو بوٹ کا پتہ لگانے کے نظاموں کے پکڑے جانے سے بچنے کے ل pro پراکسی کے استعمال پر بھی چھوتا ہے۔
یاہو امیجز سے تصاویر کو کھرچنے کے ل you ، آپ کو مندرجہ ذیل ازگر لائبریریوں کی ضرورت ہوگی:
اس بات کو یقینی بنائیں کہ آپ کے پاس تمام ضروری لائبریریاں نصب ہیں۔ ان کو PIP کا استعمال کرتے ہوئے انسٹال کریں:
pip install requests
pip install lxml
یا ایک ہی کمانڈ استعمال کریں:
pip install requests lxml
پہلے ، ہمیں اپنے کھرچنے کے لئے ضروری لائبریریوں کو درآمد کرنے کی ضرورت ہے۔
import requests
from lxml import html
اگلا ، ہم یاہو کی تصاویر پر تلاش کریں گے۔
یہاں ہم کسی تلاش کے استفسار کو کتے کے طور پر بیان کریں گے اور ضروری ہیڈر کے ساتھ یاہو امیجز کی تلاش کو گیٹ درخواست بھیجیں گے۔ درخواست کے ہیڈرز براؤزر کی درخواست کی نقل کرنا اہم ہیں ، جو بوٹ کا پتہ لگانے کے کچھ بنیادی طریقہ کار کو نظرانداز کرنے میں مدد کرتا ہے۔
# براؤزر کی درخواست کی نقل کرنے کے لئے ہیڈر کی وضاحت کریں
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": "max-age=0",
"dnt": "1",
"priority": "u=0, i",
"sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
"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/125.0.0.0 Safari/537.36",
}
# تلاش کے استفسار کی وضاحت کریں
search_query = "puppies"
# یاہو امیجز سرچ پیج سے درخواست دیں
response = requests.get(
url=f"https://images.search.yahoo.com/search/images?p={search_query}",
headers=headers
)
یاہو کی طرف سے جواب موصول ہونے کے بعد ، ہمیں امیج یو آر ایل نکالنے کے لئے ایچ ٹی ایم ایل کی تجزیہ کرنے کی ضرورت ہے۔ ہم اس مقصد کے لئے LXML استعمال کرتے ہیں۔
# HTML ردعمل کی تجزیہ کریں
parser = fromstring(response.text)
# ایکسپاتھ کا استعمال کرتے ہوئے امیج یو آر ایل کو نکالیں
images_urls = parser.xpath("//li[contains(@id, 'resitem-')]/a//@src")
HTML ردعمل کے متن کی تجزیہ کرنے کے لئے فنکشن کا استعمال کیا جاتا ہے۔ ایکسپاتھ کو تصاویر کے یو آر ایل نکالنے کے لئے استعمال کیا جاتا ہے۔ نیچے دیئے گئے اسکرین شاٹ سے پتہ چلتا ہے کہ ایکسپاتھ کو کیسے حاصل کیا گیا۔
امیج یو آر ایل کی فہرست کے ساتھ ، اب ہمیں ہر تصویر کو ڈاؤن لوڈ کرنے کی ضرورت ہے۔
یہاں ، ہم گنتی (انڈیکس) اور یو آر ایل (ایڈریس) دونوں کو نکالنے کے لئے امیجز_ورلس لسٹ کے ذریعے لوپ کریں گے۔ اس کے بعد ہر تصویر کو متعلقہ یو آر ایل کو گیٹ درخواست بھیج کر ڈاؤن لوڈ کیا جائے گا۔
# ہر تصویر ڈاؤن لوڈ کریں اور اسے فائل میں محفوظ کریں
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers)
آخر میں ، ہم ڈاؤن لوڈ کی گئی تصاویر کو مقامی فائل سسٹم میں محفوظ کرتے ہیں۔ ہم ایک فنکشن کو ڈاؤن لوڈ_فائل کی وضاحت کرتے ہیں جو فائل کی بچت کے عمل کو سنبھالتا ہے۔
یہ فنکشن گنتی (منفرد فائل نام بنانے کے ل)) اور ردعمل (تصویری ڈیٹا پر مشتمل ہے) لیتا ہے۔ یہ مواد کی قسم کے ہیڈر سے فائل کی توسیع کا تعین کرتا ہے اور فائل کو ./images/ ڈائریکٹری میں محفوظ کرتا ہے۔
def download_file(count, response):
# مواد کی قسم کے ہیڈر سے فائل کی توسیع حاصل کریں
extension = response.headers.get("Content-Type").split("/")[1]
filename = "./images/" + str(count) + f".{extension}"
# اگر یہ موجود نہیں ہے تو ڈائریکٹری بنائیں
os.makedirs(os.path.dirname(filename), exist_ok=True)
# فائل پر جوابی مواد لکھیں
with open(filename, "wb") as f:
f.write(response.content)
اس فنکشن کو لوپ کے اندر کال کرکے ، ہم ہر ڈاؤن لوڈ کی گئی تصویر کو محفوظ کرتے ہیں:
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers)
download_file(count, response)
یاہو سے ڈیٹا کو کھرچتے ہوئے ، یاہو کے بوٹ کا پتہ لگانے کے طریقہ کار سے آگاہ ہونا ضروری ہے۔ یاہو بنیادی طور پر ان تکنیکوں کو خودکار بوٹس کی شناخت اور بلاک کرنے کے لئے استعمال کرتا ہے:
یاہو بوٹ کا پتہ لگانے کے طریقہ کار کے ذریعہ مسدود ہونے سے بچنے کے ل especially ، خاص طور پر جب ایک ہی IP سے متعدد درخواستیں کرتے ہو تو ، ہم اپنے IP ایڈریس کو ماسک کرنے کے لئے پراکسی استعمال کرتے ہیں۔
مختلف پراکسیوں کے ذریعہ اپنی درخواستوں کو روٹ کرنے سے ، ہم اپنی کھرچنے والی سرگرمی کو متعدد IP پتے پر تقسیم کرسکتے ہیں ، لہذا اس کا پتہ لگانے کے امکان کو کم کیا جاسکتا ہے۔
proxies = {
'http': 'http://USER:PASS@HOST:PORT',
'https': 'http://USER:PASS@HOST:PORT'
}
response = requests.get(url, headers=headers, proxies=proxies, verify=False)
پراکسیوں کا استعمال کرتے ہوئے یاہو امیجز کی تصاویر کو کھرچنے کے لئے یہاں مکمل اسکرپٹ ہے:
import os
import requests
from lxml.html import fromstring
def download_file(count, response):
"""
./images/ ڈائریکٹری میں کسی فائل کے جواب کے مواد کو محفوظ کرتا ہے۔
Args:
count (int): فائل کے لئے ایک انوکھا شناخت کنندہ۔
response (requests.Response):فائل مواد پر مشتمل HTTP جواب۔
"""
# مواد کی قسم کے ہیڈر سے فائل کی توسیع حاصل کریں
extension = response.headers.get("Content-Type").split("/")[1]
filename = "./images/" + str(count) + f".{extension}"
# اگر یہ موجود نہیں ہے تو ڈائریکٹری بنائیں
os.makedirs(os.path.dirname(filename), exist_ok=True)
# فائل پر جوابی مواد لکھیں
with open(filename, "wb") as f:
f.write(response.content)
def main():
"""
تصاویر کی تلاش اور انہیں ڈاؤن لوڈ کرنے کے لئے مرکزی فنکشن۔
یہ فنکشن مندرجہ ذیل اقدامات انجام دیتا ہے:
1. درخواست کے ہیڈروں کو مرتب کرتا ہے۔
2. یاہو پر پپیوں کی تصاویر کی تلاش۔
3. تصویری URL کو نکالنے کے لئے HTML ردعمل کو پارس کرتا ہے۔
4. ہر تصویر کو ڈاؤن لوڈ کرتا ہے اور اسے ./images/ ڈائریکٹری میں محفوظ کرتا ہے۔
"""
#براؤزر کی درخواست کی نقل کرنے کے لئے ہیڈر کی وضاحت کریں
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": "max-age=0",
"dnt": "1",
"priority": "u=0, i",
"sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
"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/125.0.0.0 Safari/537.36",
}
# شرح کو محدود کرنے کے لئے پراکسیوں کی وضاحت کریں
proxies = {"http": "http://USER:PASS@HOST:PORT", "https": "http://USER:PASS@HOST:PORT"}
#تلاش کے استفسار کی وضاحت کریں
search_query = "puppies"
# یاہو امیجز سرچ پیج سے درخواست دیں
response = requests.get(
url=f"https://images.search.yahoo.com/search/images?p={search_query}",
headers=headers,
proxies=proxies,
verify=False
)
# HTML ردعمل کی تجزیہ کریں
parser = fromstring(response.text)
# ایکسپاتھ کا استعمال کرتے ہوئے امیج یو آر ایل کو نکالیں
images_urls = parser.xpath("//li[contains(@id, 'resitem-')]/a//@src")
# ہر تصویر ڈاؤن لوڈ کریں اور اسے فائل میں محفوظ کریں
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
download_file(count, response)
if __name__ == "__main__":
main()
یاہو امیج کی تلاش سے ازگر کا استعمال کرتے ہوئے تصاویر کو کھرچنا ڈیٹا اکٹھا کرنے اور تجزیہ کرنے کے کاموں کو خودکار کرنے کے لئے ایک طاقتور تکنیک ہے۔ HTTP درخواستوں کے لئے درخواستوں کی لائبریری اور HTML تجزیہ کے لئے LXML لائبریری کا استعمال کرکے ، آپ امیج کے URL کو موثر انداز میں نکال سکتے ہیں اور تصاویر کو ڈاؤن لوڈ کرسکتے ہیں۔ پراکسیوں کو شامل کرنے سے آپ کو وسیع پیمانے پر کھرچنے والی سرگرمیوں کے دوران پتہ لگانے اور آئی پی پابندیوں سے بچنے میں مدد ملتی ہے۔
تبصرے: 0