2012-02-28 187 views
3

这是我的代码。我的parse_item方法没有被调用。scrapy parse_item方法没有被调用

from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.selector import HtmlXPathSelector 

class SjsuSpider(CrawlSpider): 

    name = 'sjsu' 
    allowed_domains = ['sjsu.edu'] 
    start_urls = ['http://cs.sjsu.edu/'] 
    # allow=() is used to match all links 
    rules = [Rule(SgmlLinkExtractor(allow=()), follow=True), 
      Rule(SgmlLinkExtractor(allow=()), callback='parse_item')] 

    def parse_item(self, response): 
     print "some message" 
     open("sjsupages", 'a').write(response.body) 
+0

你必须指定允许值??:

而且,你的规则可以写成我认为你的蜘蛛没有找到任何物品来解析。 – dm03514 2012-02-28 01:56:43

+0

我不知道......但这是有道理的。如果我想要废除一切,我可以放入什么。 – riship89 2012-02-28 02:10:07

回答

6

您允许的域名应该是'cs.sjsu.edu'

Scrapy不允许允许域的子域名。

rules = [Rule(SgmlLinkExtractor(), follow=True, callback='parse_item')] 
+1

它应该不是规则= [Rule(SgmlLinkExtractor(),follow = True,callback = self.parse_item)] ?? – 2012-02-28 11:18:55

+0

是的,谢谢,纠正。 – Acorn 2012-02-28 21:54:31

+1

'self.parse_item'不起作用,因为'self'不在类定义的范围内。所以'parse_item'作为一个字符串是明智的。 – 2012-09-08 18:23:40