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
XPath-嵌套路径刮取_Xpath - Fatal编程技术网

XPath-嵌套路径刮取

XPath-嵌套路径刮取,xpath,Xpath,我正在尝试执行网页的html废弃。我喜欢从三个“img”元素中提取三个备用文本(alt突出显示) 我使用下面的代码提取幻灯片1的整个“img”元素 from lxml import html import requests page = requests.get('sample.html') tree = html.fromstring(page.content)

我正在尝试执行网页的html废弃。我喜欢从三个“img”元素中提取三个备用文本(alt突出显示)

我使用下面的代码提取幻灯片1的整个“img”元素

          from lxml import html                    
          import requests
          page = requests.get('sample.html')
          tree = html.fromstring(page.content)
          text_val = tree.xpath('//a[class="cover-wrapper"][id = "slide-1"]/text()')
          print text_val
我没有显示备用文本值。但这是一个空列表

使用的HTML脚本:

试试这个:

//a[@class="cover-wrapper"]/img/@alt
因此,我首先选择具有标记和类作为封面包装的节点,然后选择节点img,然后选择img的属性alt

要查找整个图像元素,请执行以下操作:

//a[@class="cover-wrapper"]
我想你想要:

//div[@class="showcase-wrapper"][@id="slide-1"]/a/img/@alt

这是一种可能的XPath:

//div[@id='slide-1']/a[@class='cover-wrapper']/img/@alt
说明:

//div[@id='slide-1']/a[@class='cover-wrapper']/img/@alt
  • //div[@id='slide-1']
    :此部分通过比较
    id
    属性值来查找目标
    元素。注意使用
    @attribute\u name
    语法来引用XPath中的属性。缺少
    @
    符号会将XPath选择器的含义更改为引用具有相同名称的-child-元素,而不是属性
  • /a[@class='cover-wrapper']
    :从XPath前一位找到的每个
    元素中,找到属性值等于
    'cover-wrapper'
    的子元素

  • /img/@alt
    :然后从每个这样的
    元素中,找到子元素
    ,并返回其
    alt
    属性


如果要在屏幕截图中返回所有3个
alt
属性,则可能需要将
id
过滤器更改为
以(@id,'slide-')开头。

是否要
[class=“showcase wrapper”]
?请将代码包含在
代码格式中,而不是屏幕截图中。我这里缺少一些内容…我得到一个空列表作为输出。我会在我这边做一些分析。。。谢谢你的详细解释。我很感激。。。