ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-11-19 03:56:17  阅读:200  来源: 互联网

标签:python-requests xpath lxml python parsing


使用以下脚本:

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.

标签:python-requests,xpath,lxml,python,parsing
来源: https://codeday.me/bug/20191119/2033289.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有