【发布时间】:2016-05-16 03:54:24
【问题描述】:
使用以下脚本:
from lxml import html
import requests
gameUrl = 'http://store.401games.ca/catalog/2415520/caylus'
page = requests.get(gameUrl)
tree = html.fromstring(page.content)
stock = tree.xpath('//*[@id="stock"]/span[1]/div/*/text()')[0]
print stock
它将正确显示页面上列出的库存水平。 (此时为 1 个)
gameUrl = 'http://store.401games.ca/catalog/2415324/ticket-to-ride'
它显示库存为 68,这是不正确的。 (我什至不知道 68 是从哪里来的)。
我在这个站点的很多页面上都试过这个,其中 90% 的页面使用这个脚本都能正常工作。但是另外 10% 失败并给出随机数……有些完全不同,比如 68 而不是 30。或者 1100 而不是 30。有些更接近,比如 12 而不是 9。我不知道发生了什么。
有人知道可能是什么问题吗?
【问题讨论】:
-
听起来你的 xpath 表达式对于失败的页面来说是完全错误的。首先要做的是花一些时间检查这些页面的内容,看看它与正常工作的页面有何不同。
-
@larsks 这不是我怀疑的。如果您打开该页面,您会注意到
quantity: 68在正确的quantity: 30出现之前“闪烁”。有趣的问题要解决,我会说。
标签: python parsing xpath python-requests lxml