Подождите, пока веб-страница загрузится в Scrapy.

Я использую сценарий scrapy для загрузки URL-адреса с помощью «доходности».

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 подождал некоторое время, чтобы загрузить весь текст в элемент ['Описание']. Я пробовал «DOWNLOAD_DELAY» в settings.py, но бесполезно.


person Prabhakar    schedule 27.02.2015    source источник
comment
Scrapy загружает весь ответ перед запуском обратного вызова. Время загрузки, которое вы заметили в своем браузере, может быть дополнительными вещами, извлекаемыми/отображаемыми с помощью javascript, которые scrapy не делает сам по себе. Попробуйте выполнить scrapy shell <url>, чтобы увидеть, что scrapy видит сайт. Вам нужно проверить, что еще извлекает страница, и изменить свой код, чтобы он соответствовал этому, или использовать безголовый браузер для отображения javascript страницы. (например, всплеск, селен)   -  person marven    schedule 28.02.2015
comment
Я использовал заставку для рендеринга javascript. Но на выходе пусто. Я не уверен, отображает ли scrapy мою страницу javascript   -  person Prabhakar    schedule 14.03.2015
comment
Независимо от того, используете ли вы заставку, то, что сказал @marven, верно, Scrapy будет ждать всего ответа, прежде чем продолжить. Если вы используете Splash, Splash становится новым веб-сервером. С точки зрения Scrapy, Splash является его конечной точкой и будет ждать, пока Splash вернет весь ответ.   -  person Rejected    schedule 25.08.2015
comment
Как есть, ваш обратный вызов — это self.mydetail, но функция — jobdetail. Это опечатка?   -  person Rejected    schedule 25.08.2015


Ответы (1)


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

person yavalvas    schedule 25.08.2015