当前位置: 首页 > 知识库问答 >
问题:

在python中使用lxml和xpath获取空列表

陶博赡
2023-03-14

所以我有这个代码,它应该得到亚马逊上任何商品的价格。然而,我得到的不是价格,而是一个空清单。

from lxml import html
import requests

page = requests.get('https://www.amazon.com/gp/product/B06XP634L1?pf_rd_p=183f5289-9dc0-416f-942e-e8f213ef368b&pf_rd_r=W4XQCYJ4N9VQGF8HDAH0')
doc = html.fromstring(page.content)
price = doc.xpath("//span[@id='priceblock_ourprice']")
print(price)

这以前对我有用。我将感谢任何帮助。提前感谢。

共有1个答案

祁绪
2023-03-14

您需要添加用户代理标头

from lxml import html
import requests

headers = {'User-Agent':'Mozilla\5.0'}
page = requests.get('https://www.amazon.com/gp/product/B06XP634L1?pf_rd_p=183f5289-9dc0-416f-942e-e8f213ef368b&pf_rd_r=W4XQCYJ4N9VQGF8HDAH0', headers = headers)
doc = html.fromstring(page.content)
price = doc.xpath("//span[@id='priceblock_ourprice']")
print(price[0].text)

price = doc.xpath("//span[@id='priceblock_ourprice']/text()")
print(price)

bs4

from bs4 import BeautifulSoup as bs
import requests

headers = {'User-Agent':'Mozilla\5.0'}
page = requests.get('https://www.amazon.com/gp/product/B06XP634L1?pf_rd_p=183f5289-9dc0-416f-942e-e8f213ef368b&pf_rd_r=W4XQCYJ4N9VQGF8HDAH0', headers = headers)
soup = bs(page.content, 'lxml')
price = soup.select_one("#attach-base-product-price")['value']
print(price)
 类似资料:
  • 我尝试使用xpath和lxml从html标记中提取href链接。但是xpath返回空列表,而它是单独测试的,并且似乎可以工作。 代码返回空值,而xpath似乎工作正常。 我使用一个代理服务器来访问链接,它似乎可以工作,因为“doc”变量正在填充html内容。我已经检查了这些链接,现在正处于获取此xpath的正确页面上。 这是我试图从中获取数据的链接:https://www.amazon.com/s

  • 我试图使用xpath和lxml从html标签中抓取下一页的href链接。但是xpath返回空列表,而它是单独测试的,它似乎可以工作。 我尝试了css选择器和xpath,它们都返回空列表。 代码返回空值,而xpath似乎工作正常。 我在这里尝试了两种方法,但似乎都不起作用。 我正在使用一个代理服务器,用于访问链接,它似乎可以工作,因为“文档”变量正被HTML内容填充。我已经检查了链接,我在正确的页面

  • 如果我跑: 我会得到一张空名单。我猜它与名称空间有关,但我不知道如何修复它。

  • 问题内容: 我有以下格式的xml文档: 我需要使用lxml中的xpath检索所有元素。我的问题是我不知道如何使用空的名称空间。我尝试了以下示例,但没有用。请指教。 我尝试过的各种方法是: 要么 要么 在这一点上,我只是不知道该尝试什么。任何帮助是极大的赞赏。 问题答案: 这样的事情应该起作用: 另请参见http://lxml.de/xpathxslt.html#namespaces-and- pr

  • 问题内容: 我正在尝试从网页中打印/保存特定元素的HTML。 我已经从萤火虫中检索了所请求元素的XPath。 我只希望将该元素保存到文件中。我似乎没有成功。 (尝试在XPath的结尾加上和不结尾) 我将不胜感激,或者有以往的经验。 10x,大卫 问题答案: 您的XPath显然太长了,为什么不试试较短的XPath看看它们是否匹配。一个问题可能是“ tbody”,浏览器会在DOM中自动创建“ tbod

  • 问题内容: 这是我尝试从中获取数据的示例网页。 http://www.makospearguns.com/product-p/mcffgb.htm xpath取自chrome开发工具,firefox中的firepath也能够找到它,但是使用lxml时,它只会为“ text”返回一个空列表。 使用以下命令打印树文本 显示数据在那里,但是xpath似乎无法找到它。我有什么想念的吗?我尝试使用lxml和