كشط وتنزيل صور Google باستخدام Python
نشرت: 2023-01-02أدى الانتشار المتزايد لكشط الويب إلى زيادة مناطق استخدامه بشكل كبير. تقوم العديد من تطبيقات الذكاء الاصطناعي اليوم بتغذية مجموعات بيانات كشط الويب ببيانات محدثة على أساس منتظم. هناك تدفق منتظم وغير متقطع للبيانات من مواقع الويب المستهدفة إلى مجموعات بيانات تطبيقات الذكاء الاصطناعي.
الوظائف ذات الصلة: تأثير الذكاء الاصطناعي على مستقبل نجاح العملاء
تعد معالجة الصور من أكثر المجالات شيوعًا في تطبيقات الذكاء الاصطناعي. معالجة الصور هي أحد مجالات علوم الكمبيوتر التي تركز على تمكين أجهزة الكمبيوتر من تحديد وفهم الأشياء والأشخاص في الصور ومقاطع الفيديو. مثل الأنواع الأخرى من الذكاء الاصطناعي ، تهدف معالجة الصور إلى أداء وأتمتة المهام التي تكرر القدرات البشرية. في هذه الحالة ، تحاول معالجة الصور نسخ الطريقة التي يرى بها الأشخاص والطريقة التي يفهمون بها ما يرونه.
يتم الحصول على البيانات المطلوبة لتطوير الخوارزميات وتقليل هوامش الخطأ في العديد من المجالات ، وخاصة في مشاريع معالجة الصور ، عن طريق تجريف الويب. في هذه المقالة ، سنطور تطبيقًا يستخدم بشكل متكرر في مشاريع معالجة الصور. سنقوم بكشط وتنزيل صور Google باستخدام لغة برمجة Python. اذا هيا بنا نبدأ.
إعداد مشروع
أولاً ، لنفتح مجلدًا على سطح المكتب. لنفتح Terminal في مسار الملف هذا ونثبت المكتبات الضرورية عن طريق تشغيل الأمر أدناه.
طلبات تثبيت النقطة bs4 |
بعد تثبيت المكتبات الضرورية ، دعنا ننشئ ملفًا باسم "index.py" في المجلد.
شفرة
دعنا نلصق الأكواد التالية في ملف "index.py" الذي أنشأناه.
طلبات الاستيراد ، re ، json ، urllib.request من bs4 استيراد BeautifulSoupheaders = { "User-Agent": "Mozilla / 5.0 (Windows NT 10.0؛ Win64؛ x64) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 103.0.5060.114 Safari / 537.36" } queryParameters = {“q”: “marvel”، “tbm”: “isch”، “hl”: “en”، “gl”: “us”، “ijn”: “0”} target_image_path = ".isv-r.PNCib.MSM1fd.BUooTd" html = request.get (“https://www.google.com/search”، params = queryParameters، headers = headers، timeout = 30) google_images = [] def scrape_and_download_google_images (): images_data_in_json = convert_image_to_json () matched_image_data = re.findall (r '\ ”b-GRID_STATE0 \” (. *) sideChannel: \ s؟ {}}' ، images_data_in_json) remove_matched_thumbnails = remove_matched_get_thumbnails (matched_google_image_data = matched_image_data) matched_resolution_images = re.findall (r ”(؟: '|،)، \ [\” (https: | http. *؟) \ ”، \ d +، \ d + \]”، remove_matched_thumbnails) full_resolution_images = get_resolution_image (matched_resolution_images = matched_resolution_images) للفهرس ، (image_data ، image_link (رابط_الصورة) في التعداد (zip (soup.select (target_image_path) ، full_resolution_images) ، بدء = 1): append_image_to_list (image_data = image_data ، image_link = رابط_الصورة) طباعة (f '{index}. بدأ تنزيل الصورة') download_image (image_link = image_link (رابط_الصورة) ، الفهرس = الفهرس) طباعة (f '{index}. تم تنزيل الصورة بنجاح') طباعة (f'scraped and download images: {google_images} ') def remove_matched_get_thumbnails (matched_google_image_data): def get_resolution_image (matched_resolution_images): def convert_image_to_json (): def append_image_to_list (image_data، image_link (رابط_الصورة)): def download_image (image_link، index): scrape_and_download_google_images () |
إذا فحصنا الرموز ، فلننظر أولاً إلى الحقول ذات القيم الثابتة. يتم تعريف الحقول التالية كقيم ثابتة. نحدد اسم وخصائص الصورة التي نريد كشطها وتنزيلها باستخدام متغير queryParams.
اقرأ أيضًا: ChatGPT - آثاره على الشركات
رؤوس = { "User-Agent": "Mozilla / 5.0 (Windows NT 10.0؛ Win64؛ x64) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 103.0.5060.114 Safari / 537.36" } queryParameters = {“q”: “marvel”، “tbm”: “isch”، “hl”: “en”، “gl”: “us”، “ijn”: “0”} target_image_path = “.isv- r.PNCib.MSM1fd.BUooTd " Target_image_base_html_path = ".VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb" html = request.get (“https://www.google.com/search”، params = queryParameters، headers = headers، timeout = 30) google_images = [] |
طريقة scrape_and_download_google_images () هي المكان الذي يبدأ منه التدفق. يتم كشط الصور المستهدفة ثم تنزيلها إلى المجلد الذي حددناه.
def scrape_and_download_google_images ():![]() images_data_in_json = convert_image_to_json () matched_image_data = re.findall (r '\ ”b-GRID_STATE0 \” (. *) sideChannel: \ s؟ {}}' ، images_data_in_json) remove_matched_thumbnails = remove_matched_get_thumbnails (matched_google_image_data = matched_image_data) matched_resolution_images = re.findall (r ”(؟: '|،)، \ [\” (https: | http. *؟) \ ”، \ d +، \ d + \]”، remove_matched_thumbnails) full_resolution_images = get_resolution_image (matched_resolution_images = matched_resolution_images) للفهرس ، (image_data ، image_link (رابط_الصورة) في التعداد (zip (soup.select (target_image_path) ، full_resolution_images) ، بدء = 1): append_image_to_list (image_data = image_data ، image_link = رابط_الصورة) طباعة (f '{index}. بدأ تنزيل الصورة') download_image (image_link = image_link (رابط_الصورة) ، الفهرس = الفهرس) طباعة (f '{index}. تم تنزيل الصورة بنجاح') طباعة (f'scraped and download images: {google_images} ') |
يتم تنزيل الصورة المقطوعة إلى المجلد بطريقة download_image (image_link = image_link، index = index). يتم حفظ الصورة التي تم كشطها بهذه الطريقة في "Scraped_Images" التي أضفناها مسبقًا إلى موقع ملف المشروع.
ملاحظة: قم بإنشاء مجلد "Scraped_Images" في هيكل المشروع قبل تشغيل التطبيق
def download_image (image_link، index): فتاحة = urllib.request.build_opener () opener.addheaders = [('User-Agent'، 'Mozilla / 5.0 (Windows NT 10.0؛ Win64؛ x64) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 101.0.4951.54 Safari / 537.36 ′)] urllib.request.install_opener (فتاحة) urllib.request.urlretrieve (image_link، f'Scraped_Images / Image_ {index} .jpg ') |
اقرأ أيضًا: ما هي تطبيقات وفوائد Blockchain كخدمة للشركات؟
يجري
لتشغيل التطبيق ، دعنا نفتح Terminal في موقع الملف وقم بتشغيل الأمر التالي.
فهرس بيثون |
بعد تشغيل التطبيق ، تتم طباعة المعلومات التالية على وحدة التحكم الخاصة بالتطبيق.
1. بدأ تنزيل الصورة 1. تم تنزيل الصورة بنجاح 2. بدأ تحميل الصورة 2. تم تنزيل الصورة بنجاح 3. بدأ تنزيل الصورة 3. تم تنزيل الصورة بنجاح 4. بدأ تحميل الصورة 4. تم تنزيل الصورة بنجاح 5. بدأ تنزيل الصورة 5. تم تنزيل الصورة بنجاح 6. بدأ تحميل الصورة 6. تم تنزيل الصورة بنجاح 7. بدأ تنزيل الصورة 7. تم تنزيل الصورة بنجاح [...] 48. بدأ تحميل الصورة 48. الصور التي تم تنزيلها وتحميلها بنجاح: [ { 'image_title': 'Marvel Comics - Wikipedia'، "image_source_link": "https://en.wikipedia.org/wiki/Marvel_Comics" ، 'image_link (رابط_الصورة):' https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Marvel_Logo.svg/1200px-Marvel_Logo.svg.png ' } ، { 'image_title': 'Marvel Universe - Wikipedia'، "image_source_link": "https://en.wikipedia.org/wiki/Marvel_Universe" ، 'image_link (رابط_الصورة):' https://upload.wikimedia.org/wikipedia/en/1/19/Marvel_Universe_٪28Civil_War٪29.jpg ' } ، { 'image_title': 'Marvel.com | الموقع الرسمي لأفلام Marvel ، والشخصيات ، والكوميديا ، والتلفزيون ، "image_source_link": "https://www.marvel.com/"، 'image_link (رابط_الصورة):' https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg ' } ، { "image_title": "Marvel Entertainment - YouTube"، "image_source_link": "https://www.youtube.com/c/marvel"، 'رابط_الصورة': 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00jrffff' } ، { 'image_title': 'أفلام وعروض Marvel | Disney + '، "image_source_link": "https://www.disneyplus.com/brand/marvel"، 'image_link (رابط_الصورة):' https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale؟ } ، { 'image_title': 'مقدمة إلى Marvel for Newbies | سلكي ، 'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/'، 'image_link (رابط_الصورة):' https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg ' } ، { 'image_title': "كيفية مشاهدة كل فيلم من أفلام Marvel بترتيب القصة - العرض: الترفيه ، والوصفات ، والصحة ، والحياة ، والعطلات"، "image_source_link": "https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/" ، 'image_link (رابط_الصورة):' https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg ' } ، { 'image_title': 'كاريكاتير مارفيل | التاريخ والشخصيات والحقائق والأفلام | بريتانيكا ، "image_source_link": "https://www.britannica.com/topic/Marvel-Comics" ، 'image_link (رابط_الصورة):' https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg ' } ، { 'image_title': 'Captain Marvel (2019) - IMDb'، "image_source_link": "https://www.imdb.com/title/tt4154664/"، 'image_link (رابط_الصورة): } ، [...] ] |
لنلق نظرة على ملف "Scraped_Images" للتحقق من الصور التي تم تنزيلها.
اقرأ أيضًا: أنواع الشركات وكيفية دمج شركتك الناشئة
خاتمة
لقد قمنا بإزالة وتنزيل صور Google ، والتي كانت مطلوبة لسبب ما ، باستخدام Python. إذا كنت ترغب في الحصول على الصور التي تحتاجها من Google دون كتابة أي كود ، فاستكشف Zenserp API. ها هي وثائقها القوية والرائعة التي يتم تحديثها باستمرار.