Existe-t-il un moyen d'obtenir une estimation de «Cette maison» pour janvier de chaque année de 2015 à 2020 en utilisant Selenium of Beautiful Soup? [dupliquer]
À partir du lien suivant, je veux être en mesure de récupérer les données. Cependant, lorsque j'utilise Beautiful Soup, je n'ai pas pu le localiser dans le html et Beautiful soupe ne fonctionnait pas. De plus, j'ai pensé que je pourrais peut-être utiliser du sélénium pour gratter ces données, mais je ne peux pas non plus localiser ce contenu. Savez-vous comment j'utiliserais du sélénium ou de Beautiful Soup pour obtenir le Zestimate de "This home" pour janvier de chaque année de 2015-2020? Merci d'avance pour votre aide. J'utilise Python.
https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/
Réponses
Essayez le code ci-dessous, il donnera le Zestimate pour la maison.
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)
Concernant - "Janvier de chaque année de 2015-2020?" - Vous pouvez exécuter le même script manuellement en janvier pour obtenir un dernier Zestimate. Vous pouvez également créer une tâche cron. Mais je ne sais pas trop comment faire cela.
PS - Après avoir exécuté ce script environ 3-4 fois, je suis maintenant confronté à un CAPTCHA. Il y a une bonne explication disponible sur CE lien
Pour extraire le Zestimate -à- dire que Zestimate®: $4,232,581
vous devez induire WebDriverWait pour le element_to_be_clickable()
et vous pouvez utiliser des éléments suivants Locator Stratégies :
Utilisation
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)
Remarque : vous devez ajouter les importations suivantes:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC