تحليل الصور من cian.ru باستخدام السيلينيوم

مرحبًا عزيزي خابروفيت ، في هذا المثال الصغير ، أريد أن أوضح كيف يمكنك تحليل صفحة ، يتم تحميل البيانات باستخدام أدوات جافا سكريبت. علاوة على ذلك ، حتى إذا كان من السهل حفظ الصفحة في هذا المثال ، فلا يزال بإمكانك تحليل جميع الصور اللازمة منها بسبب هذه الأدوات. في هذه الحالة، وأنا استخدم الموقع cian.ru باعتبارها سبيل المثال ، والتي لديها قناعاتها المعهد ، والتي لن تستخدم، بدلا من ذلك وسوف تستخدم السيلينيوم. أنا لا أعمل في cian.ru ، أنا فقط استخدم هذا الموقع كمثال. الكود الموجود في المحلل اللغوي بسيط ومصمم للمبتدئين.


مقدمة قصيرة - عندما نظرت في وقت فراغي في أمثلة للإصلاحات على cian.ru ، اعتقدت أنه سيكون من الجيد حفظ الصور التي أحببتها ، ولكن حفظها يدويًا سيكون وقتًا طويلاً ، إلى جانب هذه ليست طريقتنا ، لذلك قررت كتابة هذا محلل.


كتب محلل في python3 من توزيع اناكوندا ، السيلينيوم و chromedriver ثنائي I تثبيتها بشكل منفصل من هذه الروابط. (وبالطبع يجب تثبيت متصفح Google Chrome على النظام )


أدناه هو رمز المحلل الكامل ، ثم سأقوم بتحليل النقاط الرئيسية بشكل منفصل.


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
import chromedriver_binary 
import urllib
import time

print('start...')

site = "https://www.cian.ru/sale/flat/222059642/"

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = webdriver.Chrome(options=chrome_options)
#driver = webdriver.Chrome()
driver.get(site)

i = 0

while True:   
    try:
        url = driver.find_element_by_xpath("//div[contains(@class, 'fotorama__active')]/img").get_attribute('src')
    except NoSuchElementException:
        break        

    i += 1
    print(i, url)

    driver.find_element_by_xpath("//div[@class='fotorama__arr fotorama__arr--next']").click()

    name = url.split('/')[-1]
    urllib.request.urlretrieve(url, name)

    time.sleep(2)

print('done.')

https://www.cian.ru/sale/flat/222059642/ . driver get. , Headless Chrome, .. webdriver.Chrome() --headless, , , chrome_options , .


site = "https://www.cian.ru/sale/flat/222059642/"

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = webdriver.Chrome(options=chrome_options)
#driver = webdriver.Chrome()
driver.get(site)

, , , .. "next".



url , try/except NoSuchElementException, , Selenium .


    try:
        url = driver.find_element_by_xpath("//div[contains(@class, 'fotorama__active')]/img").get_attribute('src')
    except NoSuchElementException:
        break       

.


    driver.find_element_by_xpath("//div[@class='fotorama__arr fotorama__arr--next']").click()

urllib.


    name = url.split('/')[-1]
    urllib.request.urlretrieve(url, name)

, . ( Selenium)


    time.sleep(2)

Selenium, , , - .


.


All Articles