【发布时间】:2024-05-03 11:05:02
【问题描述】:
我在python 中结合lxml 库编写了一个脚本,使用xpath 从网页解析某个公寓的值。在该站点中可见的该公寓的名称是Eden Tolly Cascades,它的值是15.92 to 36.28 Lac。我如何解析在我的 xpath 中提及该公寓名称的值?
我已经尝试如下,它可以正常工作,没有任何问题。但是,没有任何更清洁的方法可以达到同样的效果吗?
import requests
from lxml.html import fromstring
url = "https://www.99acres.com/ppc-2515-residential-apartment-mailer"
res = requests.get(url)
tree = fromstring(res.text)
item = tree.xpath("//h1[contains(.,'Eden Tolly')]/../../../following::div//span/strong/text()")[0]
print(item)
这是一个这样的容器:
<div class="pro-text">
<div class="product-text-box">
<div class="product-heading">
<span><img src="https://newprojects.99acres.com/projects/eden_group/eden_tolly_cascades/ln9rkpsb.jpg">
<h1 class="font-size15">Eden Tolly Cascades<p>Kabardanga</p></h1>
</span>
</div>
</div>
<div class="product-text-box">
<ul class="product-lrg-box">
<li> <span><strong><span class="rupee-font">₹ </span>15.92 to 36.28 Lac</strong></span></li>
<li><strong>549-1251 SQFT</strong></li>
<li><strong>1-3 BHK</strong></li>
<li style="width:20% !important;"><strong>New Launch</strong></li>
</ul>
<div id="tabs" class="tab-link tabs-menu tabs-menu-new">
<ul>
<li><a href="#304355broch">e-Brochure</a></li>
<li><a href="#304355amn">Amenities</a></li>
<!-- <li style="width:20% !important;"><a href="#304355floor">Floor Plan</a></li>-->
<li style="width:20% !important;"><a href="#304355dir">Directions</a></li>
</ul>
</div>
<span class="enquire-new-bt" id="304355-583061,151100-enquire-new-bt" data-val="3"> <a href="javascript:void(0)">I am Interested</a> </span> </div>
</div>
【问题讨论】:
-
您能否分享 HTML 代码示例,因为目标 URL 似乎无法访问(至少对我而言)?
-
好的,先生。我没注意到你回复了。我非常期待你的出现。将使用相关的 html 进行更新。
-
@sir Andesson,几个月前你为我提供了一个非常棒的
xpath,用于解析来自https://finance.yahoo.com/的标题,表达式为"//a[u[@class='StretchedBox']]/text()"。但是,我试图按照模式在此处构建相同的内容,但未能成功。 -
嗯...你可以试试这个
//div[contains(.//h1, 'Eden Tolly')]/following-sibling::div//span/strong/text(),但我不确定它真的是“更清晰”...让我知道XPath的哪个部分要简化的表达式 -
请将其作为答案发布@sir Andersson。这正是我正在寻找的表达方式。
标签: python python-3.x xpath web-scraping lxml