【问题标题】:Beautifulsoup missing partsBeautifulsoup 缺件
【发布时间】:2021-04-03 01:39:52
【问题描述】:

我正在尝试从 redfin 中为房子检索 saleprice

这是 HTML 的一部分:

<div class="timeline"><div class="property-history-content-container"><div class="timeline-content"><h4 class="section-header col-12">Today</h4><div class="sold-row row PropertyHistoryEventRow" id="propertyHistory-0"><div class="col-4"><p>Oct 15, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Sold (MLS) (Closed)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">$302,000<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-1"><div class="col-4"><p>Sep 16, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Contingent (Active Under Contract)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-2"><div class="col-4"><p>Sep 8, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Pending (Pending - Taking Backups)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-3"><div class="col-4"><p>Sep 5, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Listed (Active)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">$294,900<span class="number empty"> </span></div><p class="subtext">Price</p></div></div></div></div></div>

这是我的代码部分:

url = 'https://www.redfin.com/TX/Cedar-Park/615-Fence-Post-Pass-78613/home/32939011'
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser') 
soup.find_all(class_ = 'timeline-content')

但是,代码没有返回“sold”事件,只返回了 3 个事件才售出。

下面是soup.find_all(class_ = 'timeline-content')的结果

[<div class="timeline-content"><h4 class="section-header col-12">Today</h4><div class="row PropertyHistoryEventRow" id="propertyHistory-0"><div class="col-4"><p>Sep 16, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Contingent (Active Under Contract)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class="row PropertyHistoryEventRow" id="propertyHistory-1"><div class="col-4"><p>Sep 8, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Pending (Pending - Taking Backups)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class="row PropertyHistoryEventRow" id="propertyHistory-2"><div class="col-4"><p>Sep 5, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Listed (Active)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number empty">**<span class="number empty"> </span></div><p class="subtext">Price</p></div></div></div>]

【问题讨论】:

  • 那里没有价格。除非您已登录。
  • 请您将html作为文本提供。
  • 您的代码没有执行登录,因此输出可能与预期不同。我的答案基于您的示例 html 并提供 price

标签: python web-scraping beautifulsoup


【解决方案1】:

添加你想找到的标签soup.find('div', class_='timeline-content')也可以。

基于提供的 html 的示例

from bs4 import BeautifulSoup

html = """
<div class="timeline"><div class="property-history-content-container"><div class="timeline-content"><h4 class="section-header col-12">Today</h4><div class="sold-row row PropertyHistoryEventRow" id="propertyHistory-0"><div class="col-4"><p>Oct 15, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Sold (MLS) (Closed)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">$302,000<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-1"><div class="col-4"><p>Sep 16, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Contingent (Active Under Contract)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-2"><div class="col-4"><p>Sep 8, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Pending (Pending - Taking Backups)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">—<span class="number empty"> </span></div><p class="subtext">Price</p></div></div><div class=" row PropertyHistoryEventRow" id="propertyHistory-3"><div class="col-4"><p>Sep 5, 2020</p><p class="subtext">Date</p></div><div class="description-col col-4"><div>Listed (Active)</div><div></div><p class="subtext">ACTRIS #5085856</p></div><div class="col-4"><div class="price-col number">$294,900<span class="number empty"> </span></div><p class="subtext">Price</p></div></div></div></div></div>
"""

soup=BeautifulSoup(html,'html.parser')

soup.find('div', class_='timeline-content').find('div', class_='price-col number').text

输出

$302,000

注意 您必须登录才能获得您提供的html,否则它不会包含您想要抓取的所有信息,例如price

【讨论】:

  • 谢谢!你有可以从 python 登录 redfin 的示例代码吗?
  • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受 - someone-answers - 关于登录,您应该打开另一个问题并通过链接参考。 Simple Solution
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 2023-01-22
  • 2015-10-12
  • 2013-07-16
相关资源
最近更新 更多