申明:转载请注明作者(by ChenReason)及出处,谢谢。
最近在学python,首先就想找个小功能来试着实现以下当作练手,最后决定就以爬取京东商品的缺货记录作为目标。
要爬京东数据,当然要从分析京东的商品页面开始。
我们先以京东的手机频道为例。
不然发现,有个【仅显示有货】按钮,因此不然得出这样一个思路,遍历所有商品后,【不显示只有有货 - 只显示有货=缺货商品】。
在利用python的urllib2库以及BeautifulSoup库对页面进行解析之后,会发现不管是打开只显示有货商品页面还是所有商品页面都会自动跳转自【只显示有货】商品页面。
http://list.jd.com/list.html?cat=9987%2C653%2C655&stock=0&page=1&JL=4_7_0 【显示所有货品】
http://list.jd.com/list.html?cat=9987%2C653%2C655&stock=1&page=1&JL=4_7_0 【只显示有货商品】
观察可得,地址中stock=0或1可控制,但实际解析后并不可行。
因此我们换种思路。
通过查看京东商品页面的源代码可得以下函数。
不然理解,只要找到商品的stockvalue便可得知其对应的库存信息。
在通过观察get_stock()函数
找到关键地址search.jd.com/stock?skus...F12打开浏览器控制台,刷新页面,进入Network观察台,搜索关键词后可得
将具体网址点开后可得(http://search.jd.com/stock?skus=1023433%2C1057746%2C981821%2C1199748%2C1157477%2C1165981%2C1057741%2C1160548%2C1139519%2C981822%2C1165980%2C1160245%2C1086907%2C1137839%2C1005766%2C1151485%2C974402%2C1023437%2C1185982%2C1097501%2C986951%2C1079636%2C975641%2C917461%2C1072545%2C1155902%2C1023438%2C1124332%2C1124331%2C1086898%2C1177630%2C863619%2C975631%2C1089266%2C1169454%2C1087976%2C1097628%2C937266%2C1222803%2C1084276%2C978316%2C1178704%2C919669%2C941868%2C1043963%2C1178706%2C1124365%2C1138529%2C1198696%2C1181979%2C1150413%2C917460%2C1124369%2C1182288%2C875496%2C1186212%2C973861%2C1086759%2C1060847%2C1003266&district=12_904_905&callback=get_stock_cb)
到此,获取京东商品库存的方法就找到了,接下来只要遍历该数据库即可获得商品的具体库存信息。
具体的Python代码贴在了本人Github上,https://github.com/ChenReason/PythonPractice 欢迎关注及fork。
本文出自 “By Reason” 博客,请务必保留此出处http://chenreason.blog.51cto.com/9045252/1559189
原文地址:http://chenreason.blog.51cto.com/9045252/1559189