Scrapy。我没有结果

问题描述:

我有一个工作程序。但我的文件json是空的。 我的程序应该获得纽约时报的所有文章。Scrapy。我没有结果

class ParseSpider(CrawlSpider): 
    name = "new" 
    allowed_domains = ["www.nytimes.com"] 
    start_urls = ["https://www.nytimes.com/section/world?WT.nav=page&action=click&contentCollection=World&module=HPMiniNav&pgtype=Homepage&region=TopBar"] 

    rules = (
      Rule(SgmlLinkExtractor(allow=(), restrict_xpaths=('//*[@id="story"]/div[3]/div[1]',)), callback="parse_items", follow= True), 
      ) 

def parse_item(self, response): 
    hxs = HtmlXPathSelector(response) 
    l = parseLoader(parse_item(), hxs) 

    l.add_value('url', response.url) 
    l.add_xpath('name', '//*[@id="headline"]' % u"Название статьи:") 
    l.add_xpath('text', '//*[@id="story"]/div[3]/div[1]' % u"Текст:") 

我是改变方案。编辑:

rules = (
      Rule(LinkExtractor(allow=(), restrict_xpaths=('//*[contains(@id,"story")]')), callback = 'parse_item'), 
      ) 

def parse_item(self, response): 
    l = parseLoader(response=response) 

    l.add_value('url', response.url) 
    l.add_xpath('name', '//*[@id="headline"]' % u"Название статьи:") 
    l.add_xpath('text', '//*[@id="story"]/div[3]/div[1]' % u"Текст:") 
    yield l.load_item() 

看起来像你在你的parse_item方法进行无限递归。
你不需要选择器,甚至不应该使用HtmlXpathSelector。尝试:

def parse_item(self, response): 
    l = parseLoader(response=response) 

    l.add_value('url', response.url) 
    l.add_xpath('name', '//*[@id="headline"]' % u"Название статьи:") 
    l.add_xpath('text', '//*[@id="story"]/div[3]/div[1]' % u"Текст:") 
    yield l.load_item() 

编辑:看起来像你的linkextractor规则不提取任何东西。
首先你不应该使用SgmlLinkExtractor它已被弃用。其次,你的xpath不会捕获任何东西,在某些情况下,你正在使用的xpath过于具体和不正确。尝试:

LinkExtractor(allow=(), restrict_xpaths=('//*[contains(@id,"story")]',)) 

可以调试,并尝试这scrapy shell命令:??

$ scrapy shell "https://www.nytimes.com/section/..." 
from scrapy.linkextractor import LinkExtractor  
le = LinkExtractor(allow=(), restrict_xpaths=('//*[contains(@id,"story")]',)) 
le.extract_links(response) 
# 20 results will be printed 
+0

它并没有帮助我( – Maria

+0

@Maria有什么错误,你可以张贴输出日志尝试运行'scrapy抓取myspider -s LOG_FILE =/some/directory/myspider.log'并与我们分享这个日志里有什么 – Granitosaurus

+0

我不能这样做因为:IOError:[Errno 2]没有这样的文件或目录:'/ some/directory/new.log' – Maria