質問

SgmlLinkExtractorを機能させようとしています。

これは署名です:

SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)

私はただ allow =()

を使用しています

だから、私は入ります

rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

したがって、最初のURLは 'http://www.whitecase.com/jacevedo/' で、 allow =( '/ aadler'、)と入力していますそしてそれを期待する '/ aadler /' もスキャンされます。しかし代わりに、スパイダーは最初のURLをスキャンして閉じます:

[wcase] INFO: Domain opened
[wcase] DEBUG: Crawled </jacevedo/> (referer: <None>)
[wcase] INFO: Passed NuItem(school=[u'JD, ', u'Columbia Law School, Harlan Fiske Stone Scholar, Parker School Recognition of Achievement in International and Foreign Law, ', u'2005'])
[wcase] INFO: Closing domain (finished)

ここで何が間違っているのですか?

このスパイダーを終わらせるのを手伝ってくれるスクレイピーをうまく使った人はここにいますか?

助けてくれてありがとう。

以下にクモのコードを含めます:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['xxxxxx/jacevedo/']

    rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        item = NuItem()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()

注:SOでは、1つ以上のURLを投稿できませんので、必要に応じて初期URLを置き換えてください。ごめんなさい。

役に立ちましたか?

解決

&quot; parse&quot;をオーバーライドしていますメソッドが表示されます。 &quot; parse&quot;は、リンクをたどるために使用されるCrawlSpiderのプライベートメソッドです。

他のヒント

ドキュメントを確認した場合&quot; 警告&quot;明確に書かれている

&quot;クロールスパイダールールを記述するときは、コールバックとして解析を使用しないでください。クロールスパイダーは解析メソッド自体を使用してロジックを実装するためです。したがって、解析メソッドをオーバーライドすると、クロールスパイダーは機能しなくなります。&quot;

検証用のURL

allow =(r '/ aadler /'、...

&quot; rules&quot;の最初の要素の後にカンマがありません。タプルになります。

rules = (Rule(SgmlLinkExtractor(allow=('/careers/n.\w+', )), callback='parse', follow=True),)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top