Scrapy spla sh не извлек js -генерированный код - PullRequest
0 голосов
/ 12 июля 2020

Я соскабливаю 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
        )
...