2016-07-28 19 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' 

スパイダーのコードは次のとおりです。

012それぞれ

from scrapy.item import Item, Field 

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

プロジェクトのと蜘蛛のファイルの名前は

pytexas

talk_spider_basic.py

ているので、私ドン:

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) 

アイテムのコードがあります名前のために紛争があるとは思わない。

編集:

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

プロジェクト構造を投稿できますか?ありがとう。 – alecxe

+0

'BaseSpider'は廃止されました。単に' Spider'を使用してください...このチュートリアルは何歳ですか? –

+0

@NickT it's from 2013 –

答えて

1

Githubの問題#2254よる:

それはデフォルトの構造を有しています。一部のモジュールは廃止されました。scrapy.contribのように。

だから、いくつか変更する必要があります。

から:

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

へ:いくつかの状況で動作します

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

一つの解決策は、(それは> = 1.3の場合)あなたのscrapyをダウングレードです。これを行うには、次のコマンドを実行できます。

pip install scrapy==1.2

1

が、私はこの記事が古い可能性があることを知っています。しかし、私はエラー "スパイダーが見つかりません"を生成する可能性があります別の問題を発見した。私は自分のスパイダーをフォルダに整理しています(例:<crawler-project>/spiders/full<crawler-project>/spiders/clean)。そこで私は新しいディレクトリ - <crawler-project>/spiders/aaaを作成しました。そこに私は新しいスパイダーを配置しました。 __init__.pyファイルを作成するまで、この新しいスパイダーは、治療によって見つかりませんでした。 したがって、スパイダーをフォルダに整理する場合は、有効なpythonモジュールフォルダを作成する必要があります。

関連する問題