BeautifulSoup找到数据重新

时间:2017-12-06 07:19:24

标签: python beautifulsoup

我有一个python脚本使用beautifulsoup来刮取房产销售网站。 我试图从HTML中获取床位数。

搜索结果中每个商家信息的数据重新更改。 11606747美元是独一无二的。 我正在尝试通过外卡搜索" * $ beds.0.0"在示例中返回床数= 3。

没有错误消息,代码运行但没有返回数字。

我做错了什么?

HTML:

<div class="property-features is-regular listing-result__features" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2"><span class="property-feature__feature" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds"><span class="property-feature__feature-text-container" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0"><span data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.0">3</span><span data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.1"> </span><span class="property-features__feature-text" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.2">Beds</span></span>

Python代码

beds = listing.findAll('span',{"data-reactid":re.compile('*$beds.0.0')})

2 个答案:

答案 0 :(得分:1)

你可以尝试这样来获得床位状态:

content='''
<html>
 <body>
  <div class="property-features is-regular listing-result__features" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2">
   <span class="property-feature__feature" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds">
    <span class="property-feature__feature-text-container" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0">
     <span data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.0">
      3
     </span>
     <span data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.1">
     </span>
     <span class="property-features__feature-text" data-reactid=".1e881obdfqe.3.1.3.1:$11606747.0.1.0.2.$beds.0.2">
      Beds
     </span>
    </span>
   </span>
  </div>
 </body>
</html>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,"lxml")
item = soup.select("div span[data-reactid*='$11606747']")[0].text
print(' '.join(item.split()))

结果:

3 Beds

答案 1 :(得分:0)

您需要转义符号$.*,因为它们在正则表达式中很特殊:

re.compile(r'\*\$beds\.0\.0')