Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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_Xpath_Scrapy - Fatal编程技术网

Python 使用XPath提取数据

Python 使用XPath提取数据,python,xpath,scrapy,Python,Xpath,Scrapy,我想使用XPath提取网页中的数据,但什么也得不到,如何提取数据 我尝试使用下面的代码,但它们没有返回任何结果 我试着用 house.xpath('.//span[@class = "icon icon-pin"]/text()').extract_first() and house.xpath('.//span[@class = "ann info-item"]/text()').extract_first() 但我什么也得不到 下面是我要提取的代码: <span class =

我想使用XPath提取网页中的数据,但什么也得不到,如何提取数据

我尝试使用下面的代码,但它们没有返回任何结果

我试着用

house.xpath('.//span[@class = "icon icon-pin"]/text()').extract_first()

and

house.xpath('.//span[@class = "ann info-item"]/text()').extract_first()
但我什么也得不到

下面是我要提取的代码:

<span class = "ann-info-item">
     <span class = "icon icon-pin">
         ::before
       </span>
       " San Jorge "
      </span>

我想提取San Jorge,但什么也得不到。

您应该选择内部span,然后获取以下文本,这样表达式将类似于house.xpath'.//span[@class=icon-icon-pin]/following-sibling::text'.get

在shell中,我可以通过以下方式获取数据:

>>> from scrapy import Selector
>>> txt = """<span class = "ann-info-item">
...      <span class = "icon icon-pin">
...          ::before
...        </span>
...        " San Jorge "
...       </span>"""
>>> sel = Selector(text=txt)
>>> sel.xpath('//span[@class="icon icon-pin"]/following-    sibling::text()').get()
u'\n       " San Jorge "\n      '
>>> sel.xpath('//span[@class="icon icon-pin"]/following-sibling::text()').get().strip()
u'" San Jorge "'
请尝试以下操作:

.//span[@class = "ann-info-item"]/text()[2]

看起来您在第二个xpath查询中删除了一个“-”。此外,amn信息项分类范围有两个文本节点。使用[2]将获得第二个。

谢谢!非常有用。你能解释一下为什么下面的兄弟::文本有效吗?我的意思是,我明白孩子不是兄弟姐妹吗?再次检查,我们有一个ann信息项父项,里面有两个对象:span图标pin和文本。看看结束标记。文本位于内部跨距之后。因此,我们在这里使用以下同级选择器。