वहाँ 2015-2020 से सुंदर सूप के सेलेनियम का उपयोग कर हर साल जनवरी के लिए "इस घर" का एक रास्ता पाने के लिए एक रास्ता है? [डुप्लिकेट]
Follwing लिंक से मैं डेटा को परिमार्जन करने में सक्षम होना चाहता हूं। हालांकि, जब मैं सुंदर सूप का उपयोग कर रहा हूं तो मैं इसे html में नहीं ढूंढ सकता था और सुंदर सूप काम नहीं कर रहा था। इसके अलावा, मुझे लगा कि शायद मैं इस डेटा को खत्म करने के लिए सेलेनियम का उपयोग कर सकता हूं, लेकिन मैं इस सामग्री का पता नहीं लगा सकता। क्या आप जानते हैं कि मैं २०१५-२०२० से हर साल जनवरी के लिए "इस घर" का ज़ेस्टिम प्राप्त करने के लिए सेलेनियम या सुंदर सूप का उपयोग कैसे करूंगा? आपकी सहायता के लिए अग्रिम धन्यवाद। मैं पायथन का उपयोग कर रहा हूं।
https://www.zillow.com/homedetails/1954-Sandy-Point-Ln-Mount-Pleasant-SC-29466/10938706_zpid/
जवाब
नीचे दिए गए कोड की कोशिश करें, यह घर के लिए ज़ेस्टिम देगा।
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 से हर साल जनवरी?" - आप लेटेस्ट जेस्टिम पाने के लिए उसी स्क्रिप्ट को जनवरी में मैनुअली चला सकते हैं। आप क्रॉन जॉब भी बना सकते हैं। लेकिन मुझे यकीन नहीं है कि यह कैसे करना है।
PS - इस स्क्रिप्ट को लगभग 3-4 बार चलाने के बाद अब मुझे कैप्चा का सामना करना पड़ रहा है। इस लिंक पर एक अच्छी व्याख्या उपलब्ध है
Zestimate को निकालने के लिए यानी Zestimate®: $4,232,581
आपको WebDriverWait के लिए प्रेरित करना होगा element_to_be_clickable()
और आप निम्न लोकेटर रणनीतियों में से किसी एक का उपयोग कर सकते हैं :
का उपयोग कर
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)
नोट : आपको निम्नलिखित आयात जोड़ने होंगे:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC