簡單爬取京東百萬商品的缺貨記錄

申明:轉載請註明做者( ChenReason.com)及出處,謝謝。html


最近在學python,首先就想找個小功能來試着實現如下看成練手,最後決定就以爬取京東商品的缺貨記錄做爲目標。
python

要爬京東數據,固然要從分析京東的商品頁面開始。git

咱們先以京東的手機頻道爲例。github


否則發現,有個【僅顯示有貨】按鈕,所以否則得出這樣一個思路,遍歷全部商品後,【不顯示只有有貨 - 只顯示有貨=缺貨商品】。數據庫

在利用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 【只顯示有貨商品】url

觀察可得,地址中stock=0或1可控制,但實際解析後並不可行。spa


所以咱們換種思路。htm


經過查看京東商品頁面的源代碼可得如下函數。

否則理解,只要找到商品的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。

相關文章
相關標籤/搜索