0

Scrapy Crawlspider の「ルール」セクションを適切に機能させようとしています。

xpathフォローしたいリンクを返すを見つけました。これは

//*[@class="course_detail"]//td[4]/a/@href

合計で約 2700 の URL が返されます。

基本的に、私はスパイダーにそれに一致するすべてのものに従うように伝えようとしてxpathいますが、次のコードを正しく動作させることができません:

rules = (
    Rule(SgmlLinkExtractor( allow=[r'.*'],
                            restrict_xpaths='//*[@class="course_detail"]//td[4]/a/@href'
                           ),              
         callback='parse_item'
         ),
)

エラーは発生しませんが、スパイダーは で定義したページを通過していないようですstart_urls

編集:それを理解しました!@hrefを削除する必要がありました。Hayden のコードも役に立ったので、彼に答えを与えます。

4

1 に答える 1

1

SgmlLinkExtractorallowrestrict_xpaths渡すときは、同じタイプ (つまり、両方のリストまたは両方の文字列) である必要があると思います。ほとんどの例では次を使用します。tuples

rules = (
    Rule(SgmlLinkExtractor( allow = (r'.*',),
                            restrict_xpaths = ('//*[@class="course_detail"]//td[4]/a/@href',)
                           ),              
         callback='parse_item'
         ),
)

余談ですが、エジプトのブラケットを使用して、私の議論の場所を追跡しようとしています。

于 2012-09-29T21:29:50.633 に答える