1

当我试图抓取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 无法进行 Request() 回调

如果有人遇到类似的问题,我会很高兴提供解决方案或建议

提前致谢

Ĵ

4

1 回答 1

1

这是因为您设置了:

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

但是,您正在从不同的域抓取 url:

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

trend-in-brandvs brand-in-trend

于 2013-09-18T10:34:29.023 回答