We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Spider vetco is broken
During the global build at 2021-09-01-14-42-16, spider **vetco** failed with **0 features** and **24644 errors**.

Here's [the log](https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/logs/vetco.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/output/vetco.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/output/vetco.geojson))

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `locations/spiders/vetco_clinic.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 import json
3 import re
4 
5 import scrapy
6 
7 from locations.items import GeojsonPointItem
8 from scrapy.selector import Selector
9 
10 
11 class VetcoSpider(scrapy.Spider):
12     name = "vetco"
13     item_attributes = {'brand': "vetcoclinics"}
14     allowed_domains = ["vetcoclinics.com"]
15     start_urls = (
16         'https://www.vetcoclinics.com/services-and-clinics/vaccination-clinics-by-state/',
17     )
18 
19     def start_requests(self):
20         with open('./locations/searchable_points/us_zcta.csv') as points:
21             next(points) # Ignore the header
22             for point in points:
23                 row = point.split(',')
24                 zip = row[0].strip().strip('"')
25 
26                 url = f"https://www.vetcoclinics.com/_assets/dynamic/ajax/locator.php?zip={zip}"
27 
28                 yield scrapy.http.Request(
29                     url,
30                     self.parse,
31                     method='GET'
32                 )
33 
34     def parse(self, response):
35         jsonresponse = json.loads(response.body_as_unicode())
36         if jsonresponse is not None:
37             clinics = jsonresponse.get('clinics')
38             if clinics:
39                 for stores in clinics:
40                     body = stores['label']
41                     address = Selector(text=body).xpath('//div[@class="locationinfo_area"]/address/text()').extract()
42                     if len(address) == 3:
43                         addr_full, city_state_postal, phone = [item.split(",") for item in address]
44                         city, state_postal = [item.split(",") for item in city_state_postal]
45                         state, postal = re.search(r'([A-Z]{2}) (\d{5})', state_postal[0]).groups()
46 
47 
48                     else:
49                         addr_full, city_state_postal = [item.split(",") for item in address]
50                         city, state_postal = [item.split(",") for item in city_state_postal]
51                         state, postal = re.search(r'([A-Z]{2}) (\d{5})', state_postal[0]).groups()
52 
53                     properties = {
54                         'ref': addr_full[0].strip(),
55                         'addr_full': addr_full[0].strip(),
56                         'city': city[0].strip(),
57                         'state': state,
58                         'postcode': postal,
59                         'lat': float(stores["point"]["lat"]),
60                         'lon': float(stores["point"]["long"]),
61                         'website': response.url
62                     }
63 
64                     yield GeojsonPointItem(**properties)
65
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/locations/spiders/vetco_clinic.py b/locations/spiders/vetco_clinic.py
--- a/locations/spiders/vetco_clinic.py
+++ b/locations/spiders/vetco_clinic.py
@@ -38,7 +38,7 @@
             if clinics:
                 for stores in clinics:
                     body = stores['label']
-                    address = Selector(text=body).xpath('//div[@class="locationinfo_area"]/address/text()').extract()
+                    address = Selector(text=body).xpath('//address/text()').extract()
                     if len(address) == 3:
                         addr_full, city_state_postal, phone = [item.split(",") for item in address]
                         city, state_postal = [item.split(",") for item in city_state_postal]

{"golden_diff": "diff --git a/locations/spiders/vetco_clinic.py b/locations/spiders/vetco_clinic.py\n--- a/locations/spiders/vetco_clinic.py\n+++ b/locations/spiders/vetco_clinic.py\n@@ -38,7 +38,7 @@\n             if clinics:\n                 for stores in clinics:\n                     body = stores['label']\n-                    address = Selector(text=body).xpath('//div[@class=\"locationinfo_area\"]/address/text()').extract()\n+                    address = Selector(text=body).xpath('//address/text()').extract()\n                     if len(address) == 3:\n                         addr_full, city_state_postal, phone = [item.split(\",\") for item in address]\n                         city, state_postal = [item.split(\",\") for item in city_state_postal]\n", "issue": "Spider vetco is broken\nDuring the global build at 2021-09-01-14-42-16, spider **vetco** failed with **0 features** and **24644 errors**.\n\nHere's [the log](https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/logs/vetco.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/output/vetco.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-09-01-14-42-16/output/vetco.geojson))\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\nimport json\nimport re\n\nimport scrapy\n\nfrom locations.items import GeojsonPointItem\nfrom scrapy.selector import Selector\n\n\nclass VetcoSpider(scrapy.Spider):\n    name = \"vetco\"\n    item_attributes = {'brand': \"vetcoclinics\"}\n    allowed_domains = [\"vetcoclinics.com\"]\n    start_urls = (\n        'https://www.vetcoclinics.com/services-and-clinics/vaccination-clinics-by-state/',\n    )\n\n    def start_requests(self):\n        with open('./locations/searchable_points/us_zcta.csv') as points:\n            next(points) # Ignore the header\n            for point in points:\n                row = point.split(',')\n                zip = row[0].strip().strip('\"')\n\n                url = f\"https://www.vetcoclinics.com/_assets/dynamic/ajax/locator.php?zip={zip}\"\n\n                yield scrapy.http.Request(\n                    url,\n                    self.parse,\n                    method='GET'\n                )\n\n    def parse(self, response):\n        jsonresponse = json.loads(response.body_as_unicode())\n        if jsonresponse is not None:\n            clinics = jsonresponse.get('clinics')\n            if clinics:\n                for stores in clinics:\n                    body = stores['label']\n                    address = Selector(text=body).xpath('//div[@class=\"locationinfo_area\"]/address/text()').extract()\n                    if len(address) == 3:\n                        addr_full, city_state_postal, phone = [item.split(\",\") for item in address]\n                        city, state_postal = [item.split(\",\") for item in city_state_postal]\n                        state, postal = re.search(r'([A-Z]{2}) (\\d{5})', state_postal[0]).groups()\n\n\n                    else:\n                        addr_full, city_state_postal = [item.split(\",\") for item in address]\n                        city, state_postal = [item.split(\",\") for item in city_state_postal]\n                        state, postal = re.search(r'([A-Z]{2}) (\\d{5})', state_postal[0]).groups()\n\n                    properties = {\n                        'ref': addr_full[0].strip(),\n                        'addr_full': addr_full[0].strip(),\n                        'city': city[0].strip(),\n                        'state': state,\n                        'postcode': postal,\n                        'lat': float(stores[\"point\"][\"lat\"]),\n                        'lon': float(stores[\"point\"][\"long\"]),\n                        'website': response.url\n                    }\n\n                    yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/vetco_clinic.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\nimport json\nimport re\n\nimport scrapy\n\nfrom locations.items import GeojsonPointItem\nfrom scrapy.selector import Selector\n\n\nclass VetcoSpider(scrapy.Spider):\n    name = \"vetco\"\n    item_attributes = {'brand': \"vetcoclinics\"}\n    allowed_domains = [\"vetcoclinics.com\"]\n    start_urls = (\n        'https://www.vetcoclinics.com/services-and-clinics/vaccination-clinics-by-state/',\n    )\n\n    def start_requests(self):\n        with open('./locations/searchable_points/us_zcta.csv') as points:\n            next(points) # Ignore the header\n            for point in points:\n                row = point.split(',')\n                zip = row[0].strip().strip('\"')\n\n                url = f\"https://www.vetcoclinics.com/_assets/dynamic/ajax/locator.php?zip={zip}\"\n\n                yield scrapy.http.Request(\n                    url,\n                    self.parse,\n                    method='GET'\n                )\n\n    def parse(self, response):\n        jsonresponse = json.loads(response.body_as_unicode())\n        if jsonresponse is not None:\n            clinics = jsonresponse.get('clinics')\n            if clinics:\n                for stores in clinics:\n                    body = stores['label']\n                    address = Selector(text=body).xpath('//address/text()').extract()\n                    if len(address) == 3:\n                        addr_full, city_state_postal, phone = [item.split(\",\") for item in address]\n                        city, state_postal = [item.split(\",\") for item in city_state_postal]\n                        state, postal = re.search(r'([A-Z]{2}) (\\d{5})', state_postal[0]).groups()\n\n\n                    else:\n                        addr_full, city_state_postal = [item.split(\",\") for item in address]\n                        city, state_postal = [item.split(\",\") for item in city_state_postal]\n                        state, postal = re.search(r'([A-Z]{2}) (\\d{5})', state_postal[0]).groups()\n\n                    properties = {\n                        'ref': addr_full[0].strip(),\n                        'addr_full': addr_full[0].strip(),\n                        'city': city[0].strip(),\n                        'state': state,\n                        'postcode': postal,\n                        'lat': float(stores[\"point\"][\"lat\"]),\n                        'lon': float(stores[\"point\"][\"long\"]),\n                        'website': response.url\n                    }\n\n                    yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/vetco_clinic.py"}]}