Repository: alltheplaces/alltheplaces

Issue:
The Big Biscuit
https://bigbiscuit.com/locations/


Discussion:
@iandees  I have completed the spider (single page scraper). It scrapes **_18_** locations,

*Sample*
```
{"type": "Feature", "id": "FEG4sve0HNeaz_4MkX4GdLuyT_M=", "properties": {"ref": "1030", "@spider": "thebigbiscuit", "addr:street": "530 North West Highway 7", "addr:city": "Blue Springs", "addr:state": "Missouri MO", "addr:postcode": "64014", "name": "Blue Springs, MO", "phone": "(816) 229-3108", "website": "https://bigbiscuit.com/location/breakfast-in-blue-springs/", "brand": "The Big Biscuit"}},
{"type": "Feature", "id": "X7s1dfkLFWMGI6UmbseldpcNcaE=", "properties": {"ref": "1032", "@spider": "thebigbiscuit", "addr:street": "5502 Northeast Antioch Road", "addr:city": "Kansas City", "addr:state": "Missouri MO", "addr:postcode": "64119", "name": "Gladstone, MO (NE Antioch)", "phone": "(816) 321-2955", "website": "https://bigbiscuit.com/location/breakfast-in-gladstone/", "brand": "The Big Biscuit"}},
{"type": "Feature", "id": "C-1hwZv8WfxByNCGkVSPVADnZ84=", "properties": {"ref": "1033", "@spider": "thebigbiscuit", "addr:street": "16506 East US Highway 40", "addr:city": "Independence", "addr:state": "Missouri MO", "addr:postcode": "64055", "name": "Independence, MO", "phone": "(816) 478-6958", "website": "https://bigbiscuit.com/location/breakfast-in-independence/", "brand": "The Big Biscuit"}},
{"type": "Feature", "id": "T9YYgcHYuaty-stQS-ms-wMLCyA=", "properties": {"ref": "595", "@spider": "thebigbiscuit", "addr:street": "6332 North West Barry Rd", "addr:city": "Kansas City", "addr:state": "Missouri MO", "addr:postcode": "64154", "name": "Kansas City, MO (Barry Road)", "phone": "(816) 326-8838", "website": "https://bigbiscuit.com/location/breakfast-in-north-kansas-city/", "brand": "The Big Biscuit"}},
{"type": "Feature", "id": "0-MXqswjqopDPc5bgFf1vd--ieA=", "properties": {"ref": "1034", "@spider": "thebigbiscuit", "addr:street": "4821 West 6th St", "addr:city": "Lawrence", "addr:state": "Kansas KS", "addr:postcode": "66049", "name": "Lawrence, KS", "phone": "(785) 856-0496", "website": "https://bigbiscuit.com/location/breakfast-in-lawrence/", "brand": "The Big Biscuit"}}
```

Resolving patch:
diff --git a/locations/spiders/thebigbiscuit.py b/locations/spiders/thebigbiscuit.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/thebigbiscuit.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+
+import scrapy
+from locations.items import GeojsonPointItem
+
+
+class TheBigBiscuitSpider(scrapy.Spider):
+    name = 'thebigbiscuit'
+    item_attributes = {'brand': 'The Big Biscuit'}
+    allowed_domains = ['www.bigbiscuit.com']
+    start_urls = ['https://bigbiscuit.com/locations/']
+
+    def parse(self, response):
+        for each in response.xpath('//*[contains(@class, "section--location")]'):
+            name = each.xpath('./*[@class="location-title"]/text()').extract_first()
+            if name:
+                street = each.xpath('.//*[@class="info-block"]//*[@class="text-small"][1]/text()').extract_first()
+                postcode = each.xpath('./@data-zip').extract_first()
+                city = each.xpath('./@data-city').extract_first()
+                state = each.xpath('./@data-state').extract_first()
+                phone = each.xpath('.//*[@class="phone"]/text()').extract_first()
+                ref = each.xpath('.//*[@data-location]/@data-location').extract_first()
+                hours = each.xpath('.//*[@class="info-block"]//*[@class="text-small"][3]/text()').extract_first()
+                website = each.xpath(f'//*[@class="title h6" and text()="{name}"]/parent::div/following-sibling::a[1]/@href').extract_first()
+                properties = {
+                    'name': name,
+                    'ref': ref,
+                    'street': street,
+                    'city': city,
+                    'postcode': postcode,
+                    'state': state,
+                    'phone': phone,
+                    'website': website
+                }
+                yield GeojsonPointItem(**properties)


Test patch: