我有一个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')})
答案 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')