Позвольте запустить Scrapy Project - PullRequest
0 голосов
/ 26 февраля 2020

Я довольно новичок в Scrapy, я настроил свой проект с помощью этой строки "scrapy startproject tutorials" В терминале я использую код Visual Studio.

Я проверил, что:

  1. Имя моей собственности должно быть именно тем, которое я называю.
  2. Мой scrapy.cfg находится на том же пути, что и мой сценарий.
  3. Я проверил, что SPIDER_MODULES и NEWSPIDER_MODULE хорошо написаны в [spiders> setting.py]

Это мой код:

import scrapy

class QuoteSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = [
        'http://quotes.toscrape.com/'
    ]

    def parse(self, response):
        title = response.css('title').extract()
        yield {'titleText' : title}

my settings.py

BOT_NAME = 'quotes'

SPIDER_MODULES = ['tutorials.spiders']
NEWSPIDER_MODULE = 'tutorials.spiders'

И вот как я его запускаю:

scrapy crawl quotes

Я все еще не могу запустить сканер. Что может быть не так? Спасибо.

Редактировать:

Сообщение об ошибке, которое я получаю:

C:\Users\Mohamed\Desktop\python 1\test python\Solution Test - ALIOUA WALID\tutorials>scrapy crawl quotes
2020-02-26 09:48:35 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: quotes)
2020-02-26 09:48:35 [scrapy.utils.log] INFO: Versions: lxml 4.3.3.0, libxml2 2.9.5, cssselect 1.0.3, parsel 1.5.2, w3lib 1.20.0, Twisted 19.10.0, Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 19.0.0 (OpenSSL 1.1.1b  26 Feb 2019), cryptography 2.6.1, Platform Windows-7-6.1.7601-SP1
Traceback (most recent call last):
  File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\spiderloader.py", line 69, in load
    return self._spiders[spider_name]
KeyError: 'quotes'

During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "C:\Users\Mohamed\AppData\Local\Programs\Python\Python36\Scripts\scrapy.exe\__main__.py", line 7, in <module>
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\cmdline.py", line 146, in execute
        _run_print_help(parser, _run_command, cmd, args, opts)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\cmdline.py", line 100, in _run_print_help
        func(*a, **kw)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\cmdline.py", line 154, in _run_command
        cmd.run(args, opts)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\commands\crawl.py", line 57, in run
        self.crawler_process.crawl(spname, **opts.spargs)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\crawler.py", line 183, in crawl
        crawler = self.create_crawler(crawler_or_spidercls)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\crawler.py", line 216, in create_crawler
        return self._create_crawler(crawler_or_spidercls)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\crawler.py", line 220, in _create_crawler
        spidercls = self.spider_loader.load(spidercls)
      File "c:\users\mohamed\appdata\local\programs\python\python36\lib\site-packages\scrapy\spiderloader.py", line 71, in load
        raise KeyError("Spider not found: {}".format(spider_name))
    KeyError: 'Spider not found: quotes'

1 Ответ

2 голосов
/ 26 февраля 2020

Я не Windows пользователь или Python эксперт, поэтому я не собираюсь пробовать детальную отладку ваших путей и тому подобное, но с помощью кода, который вы выложили, даже если вы исправите свои пути и сгенерированный пауком, он все равно не будет «сканировать» веб-сайт, потому что у вас нет никакого механизма для его поиска и перехода по ссылкам на дополнительные URL-адреса для очистки.

Когда вы пишете «сканировать», я предполагаю Вы имеете в виду несколько страниц, если вы просто хотите одну страницу, я бы ожидал, что вы будете использовать такие термины, как «выборка» или «анализ» (или выборка, а затем анализ).

Как уже отмечалось, попробуйте genspider но также добавьте параметры для шаблона сканирования ... если память служит, это что-то вроде scrapy genspider -t crawl quotes quotes.toscrape.com

Это даст вам шаблон паука со встроенными обратными вызовами для поиска и сканирования дополнительных URL-адресов.

...