2016-11-06 6 views
0

クレイグリストの最初のページをスクラップできます。しかし、Linkextractorは他のページからデータを取得していません。ルールの定義に何か間違っているのですか?スクリーニング・パイソン・ルールが機能しない

import scrapy 
from craiglist.items import craiglistItem 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 


class ExampleSpider(CrawlSpider): 
    name = "craiglist" 
    allowed_domains = ["craiglist.org"] 
    start_urls = (
     'http://sfbay.craigslist.org/search/npo', 
    ) 
    rules = [ 
     Rule(LinkExtractor(restrict_xpaths='//a[@class="button next"]'),  callback='parse', follow= True) 
    ] 

    def parse(self, response): 
     titles = response.selector.xpath('//*[@id="sortable-results"]/ul/li/p') 
     items = [] 
     for title in titles: 
      item = craiglistItem() 
      item["title"] = title.select("a/text()").extract() 
      item["link"] = title.select("a/@href").extract() 
      items.append(item) 
     return items 
+0

あなたの開始URLは、多分それは私がhttp://sfbay.craigslist.orgで許可されているドメインを更新している問題 – intelis

+0

だ、許可されているドメインとは異なります。また、リンクフォローは起こっていません –

+0

何がエラーですか? – intelis

答えて

0

私はコードを修正しましたが、現在は正常に動作しています。以下は作業コードです。

import scrapy 
from craiglist.items import craiglistItem 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 
from scrapy.http import Request 


class ExampleSpider(CrawlSpider): 
    name = "craiglist" 
    allowed_domains = ["craigslist.org"] 
    start_urls = (
     'http://sfbay.craigslist.org/search/npo', 
    ) 
    rules = [ 
     Rule(LinkExtractor(restrict_xpaths='//a[@class="button next"]'), callback="parse_items", follow= True), 
    ] 

    def parse_start_url(self,response): 
     request=Request("http://sfbay.craigslist.org/search/npo", callback=self.parse_items) 
     return request 

    def parse_items(self, response): 
     titles = response.selector.xpath('//*[@id="sortable-results"]/ul/li/p') 
     items = [] 
     for title in titles: 
      item = craiglistItem() 
      item["title"] = title.select("a/text()").extract() 
      item["link"] = title.select("a/@href").extract() 
      #item["link"] = response.url 
      items.append(item) 
     return items 
関連する問題