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检索img src属性时遇到xpath语法问题_Python_Xpath_Web Scraping_Lxml_Elementtree - Fatal编程技术网

使用Python检索img src属性时遇到xpath语法问题

使用Python检索img src属性时遇到xpath语法问题,python,xpath,web-scraping,lxml,elementtree,Python,Xpath,Web Scraping,Lxml,Elementtree,我一直在试图找出解析这个html的xpath语法,但我没有得到与其他人相同的结果。之后我一直在为我的工作建模,但我无法让它为我的html工作 <div id="sku-8103"> <!-- B:649 --> <input type="hidden" id="productIdPDP" value="1218866963585"/> <input type="hidden" id="skuIdPDP" value="824010

我一直在试图找出解析这个html的xpath语法,但我没有得到与其他人相同的结果。之后我一直在为我的工作建模,但我无法让它为我的html工作

<div id="sku-8103">
    <!-- B:649 -->
    <input type="hidden" id="productIdPDP" value="1218866963585"/>
    <input type="hidden" id="skuIdPDP" value="8240103" />
    <input type="hidden" id="enableLightbox" value="" />
    <!-- B:780 -->
    <img src="http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif" alt="Not Orderable" border="0" id="notorderable" />
    <input name="8240103" type="hidden" value="1">
    <!-- E:780 -->
    <!-- E:649 -->
    </div>
输出为:
[]
而不是图像的
src
值。我还尝试:

product = tree.xpath('//div[@id="sku-8240103"]/img[@src]/text()')
但这似乎也不起作用。

您的HTML包含以下内容:

<div id="sku-8103">
注意到不同的SKU编号了吗?没有匹配的节点,因此返回空列表,
[]

如果您这样更改它:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
现在,您将获得一个元素列表,如下所示:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
…你会发现:

http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif
实际上,您不需要那里的
[@src]
部分;如果您试图将其限制为具有
src
属性的
img
s…您还希望看到哪些
img
s?

您的HTML具有以下特性:

<div id="sku-8103">
注意到不同的SKU编号了吗?没有匹配的节点,因此返回空列表,
[]

如果您这样更改它:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
现在,您将获得一个元素列表,如下所示:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
…你会发现:

http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif
实际上,您不需要那里的
[@src]
部分;如果您试图将其限制为具有
src
属性的
img
s…您还希望看到哪些
img
s?

您的HTML具有以下特性:

<div id="sku-8103">
注意到不同的SKU编号了吗?没有匹配的节点,因此返回空列表,
[]

如果您这样更改它:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
现在,您将获得一个元素列表,如下所示:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
…你会发现:

http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif
实际上,您不需要那里的
[@src]
部分;如果您试图将其限制为具有
src
属性的
img
s…您还希望看到哪些
img
s?

您的HTML具有以下特性:

<div id="sku-8103">
注意到不同的SKU编号了吗?没有匹配的节点,因此返回空列表,
[]

如果您这样更改它:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
现在,您将获得一个元素列表,如下所示:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')
[<Element img at 0x10c85b890>]
…你会发现:

http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif

实际上,您不需要那里的
[@src]
部分;如果您试图将其限制为具有
src
属性的
img
s…您还希望看到什么
img
s?

好的捕获。。。但那只是我文章的一个输入错误。但是,看起来打印(产品[0].attrib['src'])确实有效,而不仅仅是打印产品。你知道为什么印刷品不起作用吗?这不只是一个列表吗?@user1152532:它确实有用。你看到了吗?这是我从运行代码的最后三行复制和粘贴的输出,SKU已固定,与您的数据相对应。这是一个列表,其中有一个img
元素
对象。@user1152532:如果您要返回一个空列表,您必须有其他打字错误。要么是这样,要么是你从真实页面复制HTML时把它搞砸了。对。。。我想我很好奇为什么
打印产品
没有生成元素对象的全部内容。我习惯于使用JSON,当我打印整个对象时,子对象也会打印出来。@user1152532:同时,当你解析JSON字符串时,你不会得到“JSON对象树”或任何东西;你只需要得到一个Python
dict
的Python
dict
s和
list
s和
str
s等等。这是因为JSON专门设计为只保存所有脚本语言通用的简单类型。对于HTML或XML来说,这是不正确的。好主意。。。但那只是我文章的一个输入错误。但是,看起来打印(产品[0].attrib['src'])确实有效,而不仅仅是打印产品。你知道为什么印刷品不起作用吗?这不只是一个列表吗?@user1152532:它确实有用。你看到了吗?这是我从运行代码的最后三行复制和粘贴的输出,SKU已固定,与您的数据相对应。这是一个列表,其中有一个img
元素
对象。@user1152532:如果您要返回一个空列表,您必须有其他打字错误。要么是这样,要么是你从真实页面复制HTML时把它搞砸了。对。。。我想我很好奇为什么
打印产品
没有生成元素对象的全部内容。我习惯于使用JSON,当我打印整个对象时,子对象也会打印出来。@user1152532:同时,当你解析JSON字符串时,你不会得到“JSON对象树”或任何东西;你只需要得到一个Python
dict
的Python
dict
s和
list
s和
str
s等等。这是因为JSON专门设计为只保存所有脚本语言通用的简单类型。对于HTML或XML来说,这是不正确的。好主意。。。但那只是我文章的一个输入错误。但是,看起来打印(产品[0].attrib['src'])确实有效,而不仅仅是打印产品。你知道为什么印刷品不起作用吗?这不只是一个列表吗?@user1152532:它确实有用。你看到了吗?这是我从运行代码的最后三行复制和粘贴的输出,SKU已固定,与您的数据相对应。这是一个列表,其中有一个img
元素
对象。@user1152532:如果您要返回一个空列表,您必须有其他打字错误。要么是这样,要么是你从真实页面复制HTML时把它搞砸了。对。。。我想我很好奇为什么
打印产品
没有生成元素对象的全部内容。我习惯于使用JSON,当我打印整个对象时,子对象也会打印出来。@user1152532:同时,当你解析JSON字符串时,你不会得到“JSON对象树”或任何东西;你只需要得到一个Python
dict
的Python
dict
s和
list
s和
str
s等等。这是因为JSON专门设计用于