Я столкнулся с проблемой податливости, когда пытался сканировать 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. Я проверил сгенерированные URL-адреса брендов (например, http: //www.brand-in- trend.ru/brands/parker/) в Chrome (Javasript выключен), и они работали нормально.
  2. Я поместил все сгенерированные URL-адреса брендов в список start_url и попытался передать их непосредственно в парсер категорий.
  3. Я просмотрел этот пост, который, к сожалению, не решил мою проблему: scrapy не удалось отправить запрос () обратный вызов

Если бы кто-нибудь столкнулся с подобной проблемой, я был бы очень рад ее решению или посоветовал бы

Заранее спасибо

J

1
KangLi 18 Сен 2013 в 14:31

1 ответ

Лучший ответ

Это потому, что вы установили:

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

Но вы сканируете URL из другого домена:

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

См. trend-in-brand против brand-in-trend.

1
alecxe 18 Сен 2013 в 14:34
Теперь я тоже это вижу. Это был кусочек гвоздя, и все же так просто
 – 
KangLi
18 Сен 2013 в 14:37
Хорошо, тогда подумайте о том, чтобы принять ответ, спасибо.
 – 
alecxe
18 Сен 2013 в 14:50