Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用xpath定位项的特定值?_Python_Python 3.x_Xpath_Web Scraping_Lxml - Fatal编程技术网

Python 如何使用xpath定位项的特定值?

Python 如何使用xpath定位项的特定值?,python,python-3.x,xpath,web-scraping,lxml,Python,Python 3.x,Xpath,Web Scraping,Lxml,我已经在python中编写了一个脚本,它与lxml库结合使用xpath从网页解析某个单元的值。在该站点中可见的那家工厂的名称是Eden Tolly Cascades,其值为15.92至36.28 Lac。如何在xpath中解析提到公寓名称的值 我已经试过了,就像下面这样,它是没有任何问题的工作。然而,难道没有更干净的方法来实现同样的目标吗 import requests from lxml.html import fromstring url = "https://www.99acres.co

我已经在
python
中编写了一个脚本,它与
lxml
库结合使用
xpath
从网页解析某个单元的值。在该站点中可见的那家工厂的名称是
Eden Tolly Cascades
,其值为
15.92至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">₹ &nbsp;</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>

伊甸园托利瀑布Kabardanga

  • ₹ 拉丁美洲和加勒比海15.92至36.28
  • 549-1251平方英尺
  • 1-3 BHK
  • 新产品发布
  • 宽度:20%!重要;“>
试试下面的XPath

//div[contains(.//h1, 'Eden Tolly')]/following-sibling::div//span/strong/text()

你们能分享HTML代码样本吗?因为看起来目标URL是不可访问的(至少对我来说)?当然,先生。我没注意到你的回答。我非常期待你的光临。将使用相关html进行更新。@安德松先生,几个月前,您为我提供了一个独特的很棒的
xpath
,用于解析
https://finance.yahoo.com/
表达式是
“//a[u[@class='StretchedBox']]/text()”
。然而,我试图按照这个模式在这里建立相同的模型,但没有成功。嗯。。。你可以试试这个
//div[contains(.//h1,'Eden Tolly')]/following sibling::div//span/strong/text()
,但我不确定它是否真的“更清晰”。。。让我知道您想简化XPath表达式的哪一部分,请将其作为答案@sir Andersson发布。这正是我想要的表达方式。有一件事需要知道,先生:在这种情况下,它们在兄弟姐妹之后和兄弟姐妹之后工作相同。你能给我一个线索吗?
跟随
匹配不同DOM级别上的元素(具有不同/相同父节点的节点),而
跟随同级
仅匹配相同级别上的元素(具有相同直接父节点的节点)。简单地说,
跟随兄弟姐妹
只是
跟随