Я использую скрипт 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, но не использовал.
Scrapy загружает весь ответ, прежде чем запускать обратный вызов. Это время загрузки, которое вы заметили в своем браузере, может быть дополнительными вещами, получаемыми/отображаемыми с помощью javascript, которые не делают сама по себе. Попробуйте сделать «scrapy shell» ', чтобы увидеть, что на сайте происходит« очистка ». Вам нужно проверить, что еще заставляет страницу извлекать и изменять ваш код, чтобы он соответствовал этому, или использовать безгласный браузер для рендеринга javascript страницы. (например, Splash, Selenium) –
marven
Я использовал всплеск для рендеринга javascript. Но выход пуст. Я не уверен, делает ли scrapy мою страницу javascript. – Prabhakar
Независимо от того, используете ли вы всплеск, то, что сказал @marven, верно, Scrapy будет ждать весь ответ перед продолжением. Если вы используете Splash, то Splash станет новым «веб-сервером». С точки зрения Scrapy Splash - это конечная точка и будет ждать, пока Splash не вернет всю полноту ответа. – Rejected