Nano Hash - криптовалюты, майнинг, программирование

Не удается удалить некоторые элементы с веб-сайта zillow

Я пытаюсь очистить содержимое веб-сайта zillow.

Ex- https://www.zillow.com/homedetails/689-Luis-Munoz-Marin-Blvd-APT-508-Jersey-City-NJ-07310/108625724_zpid/

Проблема в том, что я не могу очистить содержимое ценовой и налоговой истории. Я думал, что это элементы javascript, загружаемые при загрузке страницы, и, следовательно, пытался использовать селен, но я все еще не могу их получить. Вот что я пробовал.

Код

phistory = soup.find("div",{"id": "hdp-price-history"})
print phistory

HTML

<div class="loading yui3-widget yui3-async-block yui3-complaintstable yui3-hdppricehistory yui3-hdppricehistory-content" id="hdp-price-history">
  div class="zsg-content-section zsg-loading-spinner_lg"></div>
</div>

Это самый внешний элемент, но внутри нет никаких элементов. Также пробовал soup.find_all("table",class_ = "zsg-table yui3-toggle-content-minimized"), который не дает ничего.


  • Можете ли вы опубликовать код скребка? 11.05.2017
  • Соответствующий код приведен выше. 11.05.2017

Ответы:


1

Вы можете попробовать подождать, пока требуемый <table> не сгенерируется и не станет видимым:

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

driver.get("https://www.zillow.com/homedetails/689-Luis-Munoz-Marin-Blvd-APT-508-Jersey-City-NJ-07310/108625724_zpid/")
table = wait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//div[@id="hdp-price-history"]//table')))
print(table.text)

Выход:

DATE EVENT PRICE $/SQFT SOURCE
05/03/17 Listed for sale $750,000+159% $534 KELLER WILLIAM...
06/15/11 Sold $290,000-38.3% $206 Public Record
10/14/05 Sold $470,000 $334 Public Record

Вы также можете разобрать его без использования BeautifulSoup, например.

print(table.find_element_by_xpath('.//td[text()="Listed for sale"]/following::span').text)

Выход:

$750,000

or

print(table.find_element_by_xpath('.//td[text()="Sold"]/following::span').text)

Выход:

$290,000
11.05.2017
  • Я пытаюсь использовать ту же технику здесь link но это не работает. Я также пытался использовать id и element. Вот что я пробовал wait = WebDriverWait(browser, 20) table = wait.until(EC.visibility_of_element_located((By.XPATH, '//section[@id="yui_3_18_1_2_1494945298474_1290"]//table'))) 16.05.2017
  • id из section является динамическим (меняется при каждом обновлении страницы), поэтому его нельзя использовать в XPath. Попробуйте //h2[text()="Price History"]/following-sibling::table 16.05.2017
  • Я пробовал table = wait.until(EC.element_to_be_clickable( (By.XPATH, "//h3[text()='Price History']/following-sibling::table"))) print table.text, все равно ничего не получается. 16.05.2017
  • Элемент в моем XPath — это h2, а в вашем — h3. Отредактируйте и повторите попытку 16.05.2017
  • да, заголовок там был h3. Пробовал и h2 и h3. 16.05.2017
  • Итак, wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//h2[text()="Price History"]/following-sibling::table'))).text возвращает вам исключение, верно? Не могли бы вы перепроверить, как это работает хорошо с моей стороны... 16.05.2017
  • Да ничего не возвращал. Не совсем уверен, почему это произошло, но я получил его с помощью прекрасного супа. 25.05.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..