首页 > 解决方案 > Beautiful Soup 不提取网站编号,只提取公式

问题描述

在这个网站中,我想提取这段 HTML 的值 170:

<div class="right">
   <span class="currency">
      R$
   </span>
   <span class="price">
      170
   </span>
   <span class="diary">
      a diária
   </span>
</div>

但是,当我用漂亮的汤提取这段 HTML 时,我得到:

<div class="right">
   <span class="currency">
      R$
   </span>
   <span class="price">
      {{ property.minRateInCents / 100 | numberFormat(0) }}
   </span>
   <span class="diary">
      a diária
   </span>
</div>

我的代码是:

soup.find("div", class_="coluna").find("div", class_="right")

为什么我无法访问值 170 ?那个公式是什么?

标签: web-scrapingbeautifulsoup

解决方案


如果您打印,soup您会发现div标签内存在数据,您可以从中提取

import requests
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}
res=requests.get("https://www.temporadalivre.com/aluguel-temporada/brasil/sao-paulo/ubatuba/lagoinha/76203-vila-praiana-apartamento-de-um-quarto-na-praia-da-lagoinha",headers=headers)

soup=BeautifulSoup(res.text,"html.parser")

price=soup.find("div",attrs={"data-behavior":"property-details-data"})['data-property-min-rate-in-cents']
price=int(price)/100
price

输出:

170.0

如何从网站找到:

  1. 转到 Chrome 开发人员模式并刷新您的站点,现在转到左侧的网络选项卡,您将获得一个选项卡来搜索任何数据,因为从代码中我们可以看到它除以 100,因此使用 17000 在该选项卡中搜索

  2. 现在它将返回 URL,您可以使用该 URL 并调用它并找到包含该数据的适当标签

图片 :

在此处输入图像描述


推荐阅读