موارد لاسترداد مجموعات بيانات الصور التي قد لا تعرفها

مرحبا يا هبر! كما تعلم ، فإن مجموعات البيانات هي الوقود للتعلم الآلي. تعد مواقع مثل Kaggle و ImageNet و Google Dataset Search و Visual Genom هي مصادر الحصول على مجموعات البيانات التي يستخدمها الأشخاص عادة والتي يتم سماعها على نطاق واسع ، ولكن من النادر جدًا العثور على الأشخاص الذين يستخدمون مواقع مثل Bing Image Search للعثور على البيانات. وإنستغرام. لذلك ، في هذه المقالة ، سأوضح لك مدى سهولة الحصول على البيانات من هذه المصادر من خلال كتابة برنامجين صغيرين في Python.



بحث صورة Bing



أول شيء يجب فعله هو اتباع الرابط ، والنقر فوق الزر Get API Key والتسجيل باستخدام أي من الشبكات الاجتماعية المقترحة (Microsoft أو Facebook أو LinkedIn أو GitHub). بعد اكتمال عملية التسجيل ، ستتم إعادة توجيهك إلى صفحة واجهات برمجة التطبيقات الخاصة بك ، والتي يجب أن تبدو على هذا النحو (ما هو غامض هو مفاتيح API الخاصة بك):



1



ننتقل إلى كتابة التعليمات البرمجية. نقوم باستيراد المكتبات المطلوبة:



from requests import exceptions
import requests
import cv2
import os


بعد ذلك ، تحتاج إلى تحديد بعض المعلمات: مفتاح API (تحتاج إلى اختيار أحد المفتاحين المقترحين) ، وتحديد شروط البحث ، والحد الأقصى لعدد الصور لكل طلب ، وكذلك تعيين رابط عنوان URL النهائي:



subscription_key = "YOUR_API_KEY"
search_terms = ['girl', 'man']
number_of_images_per_request = 100
search_url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"


الآن سنكتب ثلاث وظائف صغيرة:

1) إنشاء مجلد منفصل لكل مصطلح بحث:



def create_folder(name_folder):
    path = os.path.join(name_folder)

    if not os.path.exists(path):
        os.makedirs(path)
        print('------------------------------')
        print("create folder with path {0}".format(path))
        print('------------------------------')

    else:
        print('------------------------------')
        print("folder exists {0}".format(path))
        print('------------------------------')
        return path


2) إرجاع محتويات استجابة الخادم في JSON:



def get_results():
    search = requests.get(search_url, headers=headers, 
                          params=params)
    search.raise_for_status()
    return search.json()


3) :



def write_image(photo):
    r = requests.get(v["contentUrl"], timeout=25)
    f = open(photo, "wb")
    f.write(r.content)
    f.close()


:



for category in search_terms:
    folder = create_folder(category)
    headers = {"Ocp-Apim-Subscription-Key": subscription_key}
    params = {"q": category, "offset": 0,
              "count": number_of_images_per_request}
    results = get_results()
    total = 0

    for offset in range(0, results["totalEstimatedMatches"],
                        number_of_images_per_request):
        params["offset"] = offset
        results = get_results()

        for v in results["value"]:
            try:
                ext = v["contentUrl"][v["contentUrl"].
                                          rfind("."):]
                photo = os.path.join(category, "{}{}".
                                     format('{}'.format(category)
                                     + str(total).zfill(6), ext))

                write_image(photo)
                print("saving: {}".format(photo))
                image = cv2.imread(photo)
                if image is None:
                    print("deleting: {}".format(photo))
                    os.remove(photo)
                    continue

                total += 1

            except Exception as e:
                if type(e) in EXCEPTIONS:
                    continue


Instagram



:



from selenium import webdriver
from time import sleep
import pyautogui
from bs4 import BeautifulSoup
import requests
import shutil


, selenium, geckodriver. , , #bird. 26 . , geckodriver, , :



browser=webdriver.Firefox(executable_path='/path/to/geckodriver')
browser.get('https://www.instagram.com/explore/tags/bird/')


6 , :

1) . login.send_keys(' ') password.send_keys(' ') :



def enter_in_account():
    button_enter = browser.find_element_by_xpath("//*[@class='sqdOP  L3NKy   y3zKF     ']")
    button_enter.click()
    sleep(2)
    login = browser.find_element_by_xpath("//*[@class='_2hvTZ pexuQ zyHYP']")
    login.send_keys('')
    sleep(1)
    password = browser.find_element_by_xpath("//*[@class='_2hvTZ pexuQ zyHYP']")
    password.send_keys('')
    enter = browser.find_element_by_xpath(
        "//*[@class='                    Igw0E     IwRSH      eGOV_         _4EzTm                                                                                                              ']")
    enter.click()
    sleep(4)
    not_now_button = browser.find_element_by_xpath("//*[@class='sqdOP yWX7d    y3zKF     ']")
    not_now_button.click()
    sleep(2)


2) :



def find_first_post():
    sleep(3)
    pyautogui.moveTo(450, 800, duration=0.5)
    pyautogui.click()


, , , - , , , moveTo() .



3) :



def get_url():
    sleep(0.5)
    pyautogui.moveTo(1740, 640, duration=0.5)
    pyautogui.click()
    return browser.current_url


, : .



4) html- :



def get_html(url):
    r = requests.get(url)
    return r.text


5) URL :



def get_src(html):
    soup = BeautifulSoup(html, 'lxml')
    src = soup.find('meta', property="og:image")
    return src['content']


6) . filename :



def download_image(image_name, image_url):
    filename = 'bird/bird{}.jpg'.format(image_name)
    r = requests.get(image_url, stream=True)

    if r.status_code == 200:
        r.raw.decode_content = True
        with open(filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
        print('Image sucessfully Downloaded')

    else:
        print('Image Couldn\'t be retreived')




. , , , , . , pyautogui, , , . , , .

, Ubuntu 18.04. GitHub.




All Articles