使用以下脚本:
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.我不知道发生了什么。
有没有人知道可能是什么问题?
答案 0 :(得分:3)
如果您要在浏览器中打开该页面,则会看到Quantity: 68
在更改为Quantity: 30
之前闪烁。
起初,我认为有一个XHR请求可以在加载页面后从某个端点动态获取产品可用性,并且几乎开始提供有关浏览器自动化的常用答案,但这里的问题不同。
如果您要在浏览器开发者工具中打开“网络”标签,则可能会看到正在加载的store.js
javascript文件。在脚本的开头,您可以看到:
if(stock>30) { $('div.availability span').text( "30" ); }
var instock = $('div.availability').text();
instock = instock.replace("In-Stock", "Quantity");
这意味着,如果数量超过30,那就是"手动"设置为30。