Analizando fotos de cian.ru usando Selenium

Hola queridos Khabrovites, en este pequeño ejemplo quiero mostrar cómo se puede analizar una página, cuyos datos se cargan mediante widgets de JavaScript. Además, incluso si la página en este ejemplo es fácil de guardar, aún no puede analizar todas las fotos necesarias debido a estos widgets. En este caso, uso cian.ru como ejemplo , que tiene su propia API , que no usaré , sino que usaré Selenium. No trabajo en cian.ru, solo uso este sitio como ejemplo. El código en el analizador es simple y está diseñado para principiantes.


Una breve introducción: cuando estaba libre, miraba ejemplos de reparaciones en cian.ru, pensé que sería bueno guardar las fotos que me gustaban, pero guardarlas manualmente sería mucho tiempo, además este no es nuestro método, así que decidí escribir esto analizador


El analizador está escrito en python3 de la distribución de Anaconda , Selenium y chromedriver binary, lo instalé por separado de estos enlaces. (Y, por supuesto, el navegador Google Chrome debe estar instalado en el sistema )


A continuación se muestra el código del analizador completo, luego analizaré los puntos principales por separado.


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