-1

I have a Scrapy Spider that runs perfectly if I call: scrapy crawl . When I try to deploy it to ScrapingHub.com it raises a SyntaxError that I can't fix. I can't figure out whats happening. There in no syntax error in my code.

here is my deployment output:

    API key is OK, you are logged in now.
omars-MacBook-Pro:airbnb omaromeiri$ shub deploy 377112
Saving project 377112 as default target. You can deploy to it via 'shub deploy' from now on
Saved to /Users/omaromeiri/Documents/Python/Scrapy/airbnb/scrapinghub.yml.
Packing version 1.0
Deploying to Scrapy Cloud project "377112"
Deploy log last 30 lines:
    _run(args, settings)
  File "/usr/local/lib/python2.7/site-packages/sh_scrapy/crawl.py", line 103, in _run
    _run_scrapy(args, settings)
  File "/usr/local/lib/python2.7/site-packages/sh_scrapy/crawl.py", line 111, in _run_scrapy
    execute(settings=settings)
  File "/usr/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 148, in execute
    cmd.crawler_process = CrawlerProcess(settings)
  File "/usr/local/lib/python2.7/site-packages/scrapy/crawler.py", line 243, in __init__
    super(CrawlerProcess, self).__init__(settings)
  File "/usr/local/lib/python2.7/site-packages/scrapy/crawler.py", line 134, in __init__
    self.spider_loader = _get_spider_loader(settings)
  File "/usr/local/lib/python2.7/site-packages/scrapy/crawler.py", line 330, in _get_spider_loader
    return loader_cls.from_settings(settings.frozencopy())
  File "/usr/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings
    return cls(settings)
  File "/usr/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__
    self._load_all_spiders()
  File "/usr/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders
    for module in walk_modules(name):
  File "/usr/local/lib/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules
    submod = import_module(fullpath)
  File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/app/__main__.egg/airbnb/spiders/airbnb_spider.py", line 28
    'Coordinates': f"{accomodation.get('listing').get('lat')},{accomodation.get('listing').get('lng')}",
                                                                                                      ^
SyntaxError: invalid syntax
{"message": "shub-image-info exit code: 1", "details": null, "error": "image_info_error"}

{"status": "error", "message": "Internal error"}
Deploy log location: /var/folders/3f/yyvy83n55tv66fdw10cbb4d80000gn/T/shub_deploy_rx_i_0wr.log
Error: Deploy failed: b'{"status": "error", "message": "Internal error"}'
Omar Omeiri
  • 1,506
  • 1
  • 17
  • 33

2 Answers2

2

You are using Python 3.6+ syntax but deploying to a Python 2.7 environment.

user2357112
  • 260,549
  • 28
  • 431
  • 505
Daniel Roseman
  • 588,541
  • 66
  • 880
  • 895
0

To add a solution in addition to Daniel Roseman's answer, you need to specify the Python 3 environment in your ScrapingHub config. After running the shub command you should have a scrapinghub.yml file in your project. Update this with the target environment:

project: 123456 

stacks:
    default: scrapy:1.6-py3

Replace the project number with your own. And if you need a specific version of Scrapy in the Python 3 environment, refer to the documentation: https://support.scrapinghub.com/support/solutions/articles/22000200387-deploying-python-3-spiders-to-scrapy-cloud

malberts
  • 2,488
  • 1
  • 11
  • 16