2016-12-14 9 views
1

こんにちは私はこのscrapyコードを(私は多くのifループを削除し、それを簡単に理解できるように)簡略化しました。 問題はこの治療法ですはウェブサイトの最初のページのみをスキャンします。私は、hte scrapy.requestが新しいURLを取得しないことを理解しました。またアイテム['url']には、常にベースURLだけが追加されてダウンロードされます。Scrapy.requestは新しいURLを取得しません

import scrapy 
from collections import Counter 
from scrapy.selector import Selector 
from Mycode.items import * 

class ExampleSpider(scrapy.Spider): 
    name = "full_sites" 
    def __init__(self, site=None, *args, **kwargs): 
     super(ExampleSpider, self).__init__(*args, **kwargs) 
     self.start_urls = [site] 
     self.base_url = site 
     self._site = site 
     self.allowed_domains = [self._site] 

    def parse(self, response): 
     for i in response.xpath('//a/@href').extract(): 
      print '================' 
      print 'i entered=', i 
      url = self.base_url + i 
      print url, 'go to scrapy' 
      yield scrapy.Request(url= url, callback=self.parse) 

      item = FullSitesItem() 
      item['url'] = response.url 
      print 'item=', item['url'] 
      yield item 

私は私のモニターにこれらの出力を得る:

================ 
i entered= /service 
http://webscraper.io/service go to scrapy 
item= http://webscraper.io 
================ 
i entered= /sitemap-specialist 
http://webscraper.io/sitemap-specialist go to scrapy 
item= http://webscraper.io 
================ 
i entered= /screenshots 
http://webscraper.io/screenshots go to scrapy 
item= http://webscraper.io 
================ 

そうにかかわらずscrapy.Requestsに渡されるURLの、項目[ 'URL']は同じです!この問題を解決するにはどうすればよいですか?あなたはresponse.urlそうiをループさ

おかげ

答えて

1

は常に同じ結果を返します。

あなたはこのようなあなたのparse方法を保つことができます。

def parse(self, response): 
    for i in response.xpath('//a/@href').extract(): 
     print '================' 
     print 'i entered=', i 
     url = self.base_url + i 
     print url, 'go to scrapy' 
     yield scrapy.Request(url= url, callback=self.parse) 

はこれがメインのページを処理します。

他のページを処理する別の解析メソッドを作成し、callback=self.parseを新しいメソッドに切り替えます。

+0

返信いただきありがとうございます。 「新しい方法」とはどういう意味ですか?あなたは別の機能を意味しますか? – nakisa

+0

はい、別の解析関数/メソッドを作成します。 –

+0

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

関連する問題