J'essaie de faire des sites WebSeCrope l'estimation Trulia pour une adresse donnée. Bien que certaines adresses n'aient pas une estimation de Trulia. Je veux donc d'abord essayer de trouver le texte 'Trulia Estimation' et s'il est trouvé, je vais essayer de trouver la valeur. Pour le moment, je ne peux pas comprendre comment trouver le texte d'estimation Trulia qui est présenté ici:
Voici le code que j'ai jusqu'à présent: P>
from selenium import webdriver from selenium.webdriver.remote import webelement from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC import pandas as pd import time from bs4 import BeautifulSoup import os from datetime import datetime from selenium.webdriver import ActionChains driver = webdriver.Firefox(executable_path = 'C:\\Users\\Downloads\\geckodriver-v0.24.0-win64\\geckodriver.exe') def get_trulia_estimate(address): driver.get('https://www.trulia.com/') print(address) element = (By.ID, 'homepageSearchBoxTextInput') WebDriverWait(driver, 10).until(EC.element_to_be_clickable(element)).click() WebDriverWait(driver, 10).until(EC.element_to_be_clickable(element)).send_keys(address) search_button = (By.CSS_SELECTOR, "button[data-auto-test-id='searchButton']") WebDriverWait(driver, 50).until(EC.element_to_be_clickable(search_button)).click() time.sleep(3) soup = BeautifulSoup(driver.page_source, 'html.parser') results = soup.find('div', {'class', 'Text__TextBase-sc-1cait9d-0 OmRik'}) print(results) get_trulia_estimate('693 Bluebird Canyon Drive, Laguna Beach, CA 92651')
3 Réponses :
On dirait que le CSS est généré à chaque fois ...
Je recommande d'utiliser XPath pour cette ... p>
Utiliser Vous voulez probablement passer à l'élément parent avec le prix ... Utilisez donc 693 Bluebird Canyon Drive, Beach Laguna, CA 92651
Trulia Estimation p>
blockQuote> Si vous utilisez le XPATH du prix, la sortie est la suivante: p> 693 Bluebird Canyon Drive, Beach Laguna, CA 92651
1,735 031 $ P>
blockQuote> p> .text code> pour obtenir le texte. < / P>
(// div [@ aria-label = "Les tendances des prix sont basées sur l'estimation de Trulia"]) [1 ] //../ h3 / div code> comme votre xpath. p>
version utilisant impression: p> le sélecteur CSS Lecture ultérieure: P> CSS Selectors référence strong> p> p>
Répondre! Pour beauxoup code>:
H3: a (+ div l'étendue: contient ("trulia estimation")) code> trouve
code> qui a une balise
< / Code> Avec String "Estimation Trulia" en tant que frère direct. P>
beauxoup code>
Si vous voulez essayer sans beauxoup,