python - 如何从 Zillow 链接中提取估计的房屋值(value)?

标签 python html beautifulsoup

<分区>

我希望我的代码能够取消 Zestimatethis page所以我可以使用它(在本例中,10,037,774)。我该怎么做呢?

最佳答案

首先,该网站在识别 Python 脚本时返回了不完整的数据。要处理这个问题,您必须使用 User-Agent模拟浏览器请求。

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
r = requests.get('https://www.zillow.com/homes/for_sale/19882656_zpid/34.217551,-118.600674,34.122534,-118.723412_rect/12_zm/1_fr/', headers=headers)

这将提供页面源中可用的所有元素。但是现在,很多元素都是用 JavaScript 动态生成的。因此,它们在页面源代码中不可用。你想要的值在<span class id="yui_3_18_1_2_1523251661826_947">里面在检查元素时可以在开发人员工具中看到。

但是在页面源码中,这个标签看起来像

<span class=""> $10,037,734 <span class="value-suffix">   </span></span>

所以,你不能使用那个 id获得值(value)。你可以获得 <span>使用 soup.find('span', {'data-target-id': 'zest-tip-hdp'}) 包含文本 Zestimate 的标签.得到下<span>标签,你可以使用 find_next('span') .

完整代码:

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
r = requests.get('https://www.zillow.com/homes/for_sale/19882656_zpid/34.217551,-118.600674,34.122534,-118.723412_rect/12_zm/1_fr/', headers=headers)
soup = BeautifulSoup(r.text, 'lxml')

zestimate = soup.find('span', {'data-target-id': 'zest-tip-hdp'}).find_next('span').text
print(zestimate)
#  $10,037,734  

还有另一种获取此数据的方法。在页面源代码的顶部,有一个看起来像

<meta property="zillow_fb:description" content="Zestimate&reg; Home Value: $10,037,734. "/>

您可以使用 property 找到标签属性并获取 content 的值属性使用 ['content'] .要获得价格,请进行一些简单的字符串拆分。

meta = soup.find('meta', property='zillow_fb:description')['content']
print(meta.split(':')[1])
#  $10,037,734. 

如果你不想要点 . , 你可以剥离它。

关于python - 如何从 Zillow 链接中提取估计的房屋值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724326/

相关文章:

Python多处理,代码继续执行?

python - Googletrans API AttributeError

html - 将全宽 slider 或图像添加到 Twitter Bootstrap 主题时出现问题

python - 从网站提取的值创建 .xls 文件

python - 在Python中使用BeautifulSoup提取表标签值?

python - 从这个网站上抓取地址和电话号码

javascript - 查找未排序和排序列表之间的最小距离

python - 如何将 Dropbox SDK 导入 Google App Engine 应用程序?

html - 按 ID 设置元素样式有效,按类设置样式无效

javascript - 使用指令注入(inject) DOM 元素 AngularJS