Я соскабливаю https://edadeal.ru/moskva/retailers/5ka Когда я звонил scrapy crawl edadeal1 -o res.json
, я получил html код без js сгенерированного содержимого --- https://pastebin.com/7yP91pTy
Я следил за инструкциями и считаю, что spla sh установлен правильно.
Как извлечь html код продуктов?
Что делал
pip install scrapy
pip install scrapy-splash
scrapy startproject edadeal
cd edadeal/
scrapy genspider edadeal1 edadeal.ru
Установил и запустил spla sh
sudo docker run -p 8050:8050 scrapinghub/splash
Добавил в settings.py
ROBOTSTXT_OBEY=False
SPLASH_URL = 'http://localhost:8050'
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
edadeal1 .py
import scrapy
from scrapy_splash import SplashRequest
class Edadeal1Spider(scrapy.Spider):
name = 'edadeal1'
allowed_domains = ['edadeal.ru']
start_urls = ['https://edadeal.ru/']
def start_requests(self):
yield SplashRequest(
url='https://edadeal.ru/',
callback=self.parse
)
def parse(self, response):
yield {
'data': response.text
}
ОБНОВЛЕНИЕ 1 Я попытался добавить паузу (но результат тот же)
yield SplashRequest(
url='https://edadeal.ru/moskva/retailers/5ka',
args={'wait': 20},
callback=self.parse
)