Selenium of Beautiful Soup kullanarak 2015-2020 arasında her yıl Ocak ayı için “Bu ev” için bir Zestimate almanın bir yolu var mı? [çiftleme]
Aşağıdaki bağlantıdan verileri kazıyabilmek istiyorum. Ancak, Beautiful Soup'u kullandığımda html'de bulamadım ve Güzel çorba çalışmıyordu. Dahası, bu verileri kazımak için belki selenyum kullanabileceğimi düşündüm, ancak bu içeriği de bulamıyorum. 2015-2020 arasındaki her yılın Ocak ayı için "Bu ev" in Zestimate'ini almak için selenyum veya Beautiful Soup'u nasıl kullanacağımı biliyor musunuz? Yardımınız için şimdiden teşekkür ederiz. Python kullanıyorum.
https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/

Yanıtlar
Aşağıdaki kodu deneyin, ev için Zestimate'ı verecektir.
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)
"2015-2020 arası her yılın Ocak ayı mı?" - En son Zestimate'ı almak için aynı komut dosyasını Ocak'ta manuel olarak çalıştırabilirsiniz. Ayrıca bir cron işi de oluşturabilirsiniz. Ama bunu nasıl yapacağımdan emin değilim.
Not - Bu betiği yaklaşık 3-4 kez çalıştırdıktan sonra şimdi bir CAPTCHA ile karşı karşıyayım. BU bağlantıda iyi bir açıklama var
Ayıklamak için Zestimate yani Zestimate®: $4,232,581
sen ikna etmek zorunda WebDriverWait için element_to_be_clickable()
ve aşağıdakilerden birini kullanabilirsiniz Bulucu Stratejileri :
Kullanarak
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)
Not : Aşağıdaki içe aktarmaları eklemeniz gerekir:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC