2017-06-22 9 views
0

私はこれに関連ダースかそこらの質問があるけど、私が見たどれもが本当に自分のクモに複数の方法がなかった、以下のトラブル...Scrapyクロールスパイダー、リンク

だから私はこすりますよカテゴリページから始まるウェブサイト。私は製品カテゴリーへのリンクをつかんで、クロールスパイダーのルールを活用して各カテゴリーの「次のページ」を自動的に繰り返し、各ステップでそのページ内の特定の情報を掻き集める。

問題は、各カテゴリの最初のページに移動して、ルールセットのfollow = Trueの部分を無視しているようです。

start_urls = ["http://home.mercadolivre.com.br/mais-categorias/"] 

rules = (
    # I would like this to force the spider to crawl through the pages... calling the product parser each time 
    Rule(LxmlLinkExtractor(allow=(), 
    restrict_xpaths = '//*[@id="results-section"]/div[2]/ul/li[@class="pagination__next"]'), follow = True, callback = 'parse_product_links'), 
) 

def parse(self, response): 
    categories = CategoriesItem() 
    #categories['categoryLinks'] = [] 
    for link in LxmlLinkExtractor(allow=('(?<=http://lista.mercadolivre.com.br/delicatessen/)(?:whisky|licor|tequila|vodka|champagnes)'), restrict_xpaths = ("//body")).extract_links(response): 
     categories['categoryURL'] = link.url 
     yield Request(link.url, meta={'categoryURL': categories['categoryURL']}, callback = self.parse_product_links) 


# ideally this function would grab the product links from each page 
def parse_product_links(self, response): 
    # I have this built out in my code, but it isnt necessary so I wanted to keep it as de-cluttered as possible 

が、私が完全に私はそれらを使用する方法とルールで使用される抽出を好きにどのように理解していないかのように表示されますので、あなたが与えることができる任意のヘルプをお願い申し上げ:だからここのコードですが、いくつかの助けを大好きです私はクロールスパイダーのルールを書いて2箇所

+0

ねえ、あなたはfunctuions内のルールを使用するはずです...彼らはルールでトップに行く...ステップでステップのようなルールを考えると、あなたの最初のページにあなたの項目を取得します。 ..各ルールはそこに得るためにリンクを取得することです https://stackoverflow.com/questions/15192362/how-to-properly-use-rules-restrict-xpaths-to-crawl-and-parse-urls-with -scrapy – scriptso

答えて

0

でコールバックとして「parse_product_links」を持っている理由である(内CrawlSpiderはそのロジックを実装するために自分自身を解析メソッドを使用しているため、コールバックなどの解析を使用しないでください。もしそうなら、あなた解析メソッドをオーバーライドすると、クロールスパイダーは機能しなくなります。

CrawlSpiderドキュメント。

ぼかしの仕組みに慣れていない場合は、CrawlSpiderを使用することは本当にお勧めできません。非常に暗黙のうちに混乱する可能性のあるショートカットです。

あなたのケースでは、parseが無効になります。この場合、次のページのルールのみが適用されます。 そのparseメソッドを取り除き、商品を見つけるルールとページを見つけるルール(新しいページで新しいページを見つけたいので、これをTrueに設定します)の2つのルールを含むルールを拡張します。

+0

ドキュメントを読んでいただきありがとうございますが、ルールのコールバックでパーズをオーバーライドしないことを意味すると思っていました。どうもありがとう – bobsaget123

関連する問題