Existe uma maneira de obter um Zestimate de “This home” para janeiro de cada ano de 2015-2020 usando Selenium of Beautiful Soup? [duplicado]
No link a seguir, desejo extrair os dados. No entanto, quando estou usando a Beautiful Soup, não consigo localizá-la no html e a Beautiful soup não funciona. Além disso, pensei que talvez pudesse usar selênio para extrair esses dados, mas também não consigo localizar esse conteúdo. Você sabe como eu usaria selênio ou sopa bonita para obter o Zestimate de "This home" para janeiro de cada ano de 2015-2020? Obrigado pela sua ajuda antecipadamente. Estou usando Python.
https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/

Respostas
Experimente o código abaixo, ele dará o Zestimate para a casa.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
options = Options()
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
options.add_argument('user-agent={0}'.format(user_agent))
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 20)
action = ActionChains(driver)
driver.get("https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/")
Home_Value = wait.until(EC.presence_of_element_located((By.XPATH, "//a[text()='Home value']")))
action.move_to_element(Home_Value).click().perform()
Zestimate = driver.find_element_by_xpath('//*[@id="ds-home-values"]/div/div[1]/div/div[1]/div/div/p').text
print(Zestimate)
Sobre - "Janeiro de cada ano de 2015-2020?" - Você pode executar o mesmo script manualmente em janeiro para obter um Zestimate mais recente. Você também pode criar um cron job. Mas não tenho certeza de como fazer isso.
PS - Depois de executar este script por cerca de 3-4 vezes, agora estou enfrentando um CAPTCHA. Há uma boa explicação disponível sobre ESTE ligação
Para extrair o Zestimate, ou seja, Zestimate®: $4,232,581
você deve induzir WebDriverWait para o element_to_be_clickable()
e pode usar uma das seguintes estratégias de localizador :
Usando
XPATH
:driver.get('https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/') print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(., 'For sale')]//following::span[contains(@class, 'ds-dashed-underline') and contains(., 'Zestimate')]//ancestor::span[2]"))).text)
Nota : Você deve adicionar as seguintes importações:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC