Welcome to Part 3 of our ongoing series! We’re tracing the prices of popular products across multiple retailers throughout the winter season. Starting from Black Friday and continuing through to January, we are keeping a close eye on price movements and the actual effects of discounts during specific days or weekends.
The New Year is upon us and I hope that this holiday season was full of laughter, love, family, and, of course, gifts. Much as we may not want to admit it, buying presents is a large part of how we celebrate our holidays in December. And while we may all be mourning the hit our bank accounts took, hopefully you did not fall prey to any unexpected price hikes.
The reason that I am comparing the Eves rather than Christmas Day or New Year’s Day is because I was curious to see if stores would take advantage of last minute panic shoppers or if the discounts would hold. Christmas Day is also incredibly dead and I wanted to keep the continuity of Christmas Eve with New Year’s Eve.
Let’s look at the damage and see which retailers might have pulled a bait and switch.
I laid out our methodology, parameters, and intervals in the first post, but I am going to continue to update the Tech and Trivia section so that you can follow along with the obstacles and solutions that have cropped up in the course of this project.
We used Scrapy selectors to extract the JS code from inside the <script> element:
>>> script = response.xpath( "normalize-space(//div[@class='product_view']/script/text())" ).extract_first() >>> script u'var variations = [ ["16GB", "$300.00"], ["32GB", "$400.00"], ["64GB", "$500.00"] ];'
Once we got the code, we used js2xml, a library that converts JS code into XML data. Then we built a selector for the XML contents:
>>> xml_data = js2xml.parse(script) >>> sel = scrapy.Selector(_root=xml_data) >>> sel <Selector xpath=None data=u'<program><var name="variations"><array><'>
We were then able to parse the contents using our usual selectors:
>>> sel.xpath("//var[@name='variations']//array/string/text()").extract() [u'$300.00', u'$400.00', u'$500.00']
The volatility of prices never fails to amaze me. In the span of a single week, a product can rise or drop $100. Even when prices hold consistently, where you shop determines if you are saving or spending at any given time.
I’m still congratulating myself on buying a FitBit Charge HR on Black Friday. Prices haven’t dipped back that low in over a month.
This was one of the most consistent categories. There weren’t any major price fluctuations except for the Samsung Galaxy Tab S2 at Best Buy (really hoping you didn’t buy that on New Year’s Eve). Amazon prices didn’t shift by more than $10 and most other prices stayed the same. One point to note is that it seems that Walmart has stopped carrying the Samsung Galaxy Tab S2 after Black Friday. Time will tell if it’s because they sold too many or too few.
The two largest price discrepancies for Wearables are the Apple Watch and the Jawbone UP3. New Year’s Eve (and current as of January 6, 2016) is the best price that Target has offered for the Apple Watch. Even during Black Friday, prices were $399 with a $100 gift card thrown in. So hopefully you were not one of those shoppers looking for a flashy last minute gift on Christmas Eve because you might be kicking yourself right now.
Christmas Eve was the clear winner for the Home Theater category. Prices were either lower than or remained the same as New Year’s Eve. And a hearty congratulations to those Christmas procrastinators that scored a great price on the Apple TV at Target.
Once again, Christmas Eve came out on top. The sale on the XBox One Bundle has finally come to an end, but this was an expected development. Walmart either sold out or ceased to offer the PS4 Bundle, which is why it is not included on this graph.
Phones was one of the least impacted categories with only the iPhone 6S at Best Buy showing a significant price difference.
I’m going to go ahead and call it for New Year’s Eve. On Christmas Eve, the Star Wars BB-8 Droid R/C at Amazon had the highest price seen since we started tracking in late November. The LeapFrog Epic Tablet at Best Buy and the Mega Bloks Minions Supervillain Jet at Walmart conveniently kept higher prices during Christmas Eve before discounts during New Year’s Eve.
Our last holiday prices post comes at the end of January so remember to follow us on Twitter and Facebook or subscribe to our RSS feed. This is the grand finale where we’ll help you make more informed shopping decisions next year!