用Python解析HTML-有些页面可以工作,有些不能…?

使用以下脚本:

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.我不知道发生了什么.

有谁知道可能是什么问题?

解决方法:

如果要在浏览器中打开页面,则在更改为“数量:30”之前,“数量:68”将闪烁.

最初,我认为存在一个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.

上一篇:像使用C#读取python的lxml一样读取XML文件吗?


下一篇:python-Pip无法安装Dryscrape