2016-07-28 3 views
0

Я пытаюсь воспроизвести код этого разговора:SCRAPY паук не найден

https://www.youtube.com/watch?v=eD8XVXLlUTE

Когда я пытаюсь запустить паук:

scrapy crawl talkspider_basic 

Я получил эту ошибку:

raise KeyError("Spider not found: {}".format(spider_name)) 
KeyError: 'Spider not found: talkspider_basic' 

Код паука:

from scrapy.spiders import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.loader import XPathItemLoader 
from pytexas.items import PytexasItem 

class TalkspiderBasicSpider(BaseSpider): 
    name = "talkspider_basic" 
    allowed_domains = ["www.pytexas.org"] 
    start_urls = ['http://wwww.pytexas.org/2013/schedule'] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     dls = hcs.select('///dl') 
     for dl in dls: 
      times = dl.select('dt/text()').extract() 
      titles = dl.select('dd/a/text()').extract() 
      for time, title in zip(times,titles): 
       title = title.strip() 
       yield PytexasItem(title=title,time= time) 

код из пунктов:

from scrapy.item import Item, Field 

class PytexasItem(Item): 
    title = Field() 
    time = Field() 
    speaker = Field() 
    description = Field() 

Название проекта и файла паука являются

pytexas

и

talk_spider_basic.py

соответственно, так что я не Думаю, что из-за имен есть какой-то конфликт.

Edit:

Он имеет структуру по умолчанию:

pytexas/  
    scrapy.cfg  
    pytexas/  
    items.py 
    pipelines.py 
    settings.py 
    spiders/ 
     __init__.py 
     talk_spider_basic.py  
+0

Не могли бы вы разместить свою структуру проекта? Благодарю. – alecxe

+0

'BaseSpider' устарел, просто используйте' Spider' ... сколько лет этому учебнику? –

+0

@NickT это с 2013 года –

ответ

1

Согласно GitHub Вопросы #2254. Потому что некоторый модуль устарел. Как scrapy.contrib.

Так что вы должны внести некоторые изменения.

От:

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.loader import XPathItemLoader 

To:

from scrapy.linkextractors import LinkExtractor 
from scrapy.loader import XPathItemLoader 
0

Одно решение, которое работает в какой-то ситуации, это понизить Scrapy (если> = 1,3). Для этого можно выполнить следующую команду:

pip install scrapy==1.2

1

Я знаю, что этот пост может быть старым. Но я нашел еще одну проблему, которая может вызвать ошибку «паук не найден». У меня есть мои пауки, организованные в папках, например <crawler-project>/spiders/full, <crawler-project>/spiders/clean. Поэтому я создал новый каталог - <crawler-project>/spiders/aaa - в котором я разместил новый паук. Этот новый паук не был найден scrapy, пока я не создал файл __init__.py. Итак, если вы хотите организовать пауков в папках, вы должны создать допустимые папки модуля python.

Смежные вопросы