Adakah cara mendapatkan Zestimate “This home” untuk bulan Januari setiap tahun dari 2015-2020 menggunakan Selenium of Beautiful Soup? [duplikat]

Aug 17 2020

Dari link berikut saya ingin bisa mengikis data. Namun, ketika saya menggunakan Beautiful Soup, saya tidak dapat menemukannya di html dan Soup indah tidak berfungsi. Selain itu, saya pikir mungkin saya dapat menggunakan selenium untuk mengikis data ini, tetapi saya juga tidak dapat menemukan konten ini. Tahukah Anda bagaimana saya menggunakan selenium atau Beautiful Soup untuk mendapatkan Semangat dari "This home" untuk bulan Januari setiap tahun dari 2015-2020? Terima kasih atas bantuan Anda sebelumnya. Saya menggunakan Python.

https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/

Jawaban

SwaroopHumane Aug 17 2020 at 15:05

Coba kode di bawah ini, itu akan memberikan Zestimate untuk rumah.

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)

Mengenai - "Januari setiap tahun dari 2015-2020?" - Anda dapat menjalankan skrip yang sama secara manual di Jan untuk mendapatkan Zestimate terbaru. Anda juga dapat membuat pekerjaan cron. Tetapi saya tidak yakin bagaimana melakukan itu.

PS - Setelah menjalankan skrip ini sekitar 3-4 kali, sekarang saya menghadapi CAPTCHA. Ada penjelasan bagus yang tersedia di tautan INI

DebanjanB Aug 17 2020 at 15:18

Untuk mengekstrak Zestimate yaitu Zestimate®: $4,232,581Anda harus mendorong WebDriverWait untuk element_to_be_clickable()dan Anda dapat menggunakan salah satu dari berikut Locator Strategi :

  • Menggunakan 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)
    
  • Catatan : Anda harus menambahkan impor berikut:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC