Scrapy搜寻器中的URL不会产生到下一个解析器

时间:2013-09-18 10:31:45

标签: python scrapy yield

当我试图抓取http://www.brand-in-trend.ru时,我遇到了一个让步问题。如下所示,我正在使用Scrapy并定义了一个Basespider。第一个解析器工作得非常好,并返回start_url上找到的所有品牌。

现在,当我想向类别解析器提供回调请求时,我没有得到响应也没有错误。蜘蛛刚退出。

蜘蛛:

class brandintrend(BaseSpider):
name = "brandintrend"

allowed_domains = [ 'trend-in-brand.ru' ]

start_urls      = [ 'http://brand-in-trend.ru/brands/' ]

def parse(self, response):
    hxs         = HtmlXPathSelector(response)
    brands      = hxs.select('//div[@class="brandcol"]/ul/li/a/@href').extract()

    for brand in brands:
        brand = "http://www.brand-in-trend.ru" + brand
        print brand
        # request = Request(brand, callback=self.categories)
        yield Request(brand, callback=self.categories)

def categories(self, response):
    print "Hello World"
    hxs = HtmlXPathSelector(response)
    print response.url

我已尝试以下方法来解决此问题:

  1. 我测试了Chrome中生成的品牌网址(例如http://www.brand-in-trend.ru/brands/parker/)(Javasript已关闭)并且工作正常。
  2. 我将所有生成的品牌网址放在start_url列表中,并尝试直接将这些网址提供给类别解析器
  3. 我查看了这篇文章,遗憾的是这篇文章没有解决我的问题:scrapy unable to make Request() callback
  4. 如果有人遇到类似的问题,我会很乐意提供解决方案或建议

    提前致谢

    Ĵ

1 个答案:

答案 0 :(得分:1)

这是因为你设置了:

allowed_domains = [ 'trend-in-brand.ru' ]

但是,您正在从其他域抓取网址:

start_urls = [ 'http://brand-in-trend.ru/brands/' ]

请参阅trend-in-brand vs brand-in-trend