2015-02-27 5 views
1

Я использую скрипт scrapy для загрузки URL-адреса с помощью «yield».Подождите, пока страница загрузится в Scrapy

MyUrl = "www.example.com" 
request = Request(MyUrl, callback=self.mydetail) 
yield request 
def mydetail(self, response): 
    item['Description'] = response.xpath(".//table[@class='list']//text()").extract() 
    return item 

URL-адрес, по-видимому, занимает не менее 5 секунд для загрузки. Поэтому я хочу, чтобы Scrapy подождала некоторое время, чтобы загрузить весь текст в элементе ['Description']. Я попытался «DOWNLOAD_DELAY» в settings.py, но не использовал.

+0

Scrapy загружает весь ответ, прежде чем запускать обратный вызов. Это время загрузки, которое вы заметили в своем браузере, может быть дополнительными вещами, получаемыми/отображаемыми с помощью javascript, которые не делают сама по себе. Попробуйте сделать «scrapy shell» ', чтобы увидеть, что на сайте происходит« очистка ». Вам нужно проверить, что еще заставляет страницу извлекать и изменять ваш код, чтобы он соответствовал этому, или использовать безгласный браузер для рендеринга javascript страницы. (например, Splash, Selenium) – marven

+0

Я использовал всплеск для рендеринга javascript. Но выход пуст. Я не уверен, делает ли scrapy мою страницу javascript. – Prabhakar

+0

Независимо от того, используете ли вы всплеск, то, что сказал @marven, верно, Scrapy будет ждать весь ответ перед продолжением. Если вы используете Splash, то Splash станет новым «веб-сервером». С точки зрения Scrapy Splash - это конечная точка и будет ждать, пока Splash не вернет всю полноту ответа. – Rejected

ответ

0

Сделайте краткий обзор firebug или другого инструмента для сбора ответов на запросы Ajax, которые были сделаны с помощью кода javascript. Вы можете создать цепочку ответов, чтобы поймать те запросы ajax, которые появляются после загрузки страницы. Существует несколько вопросов, связанных с: parse ajax content, retreive final page, parse dynamic content.

Смежные вопросы