Scrapy-Splash: не удается загрузить динамически созданный контент - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь использовать scrapy - splash на следующей странице:

https://www2.deloitte.com/us/en/misc/search.html#country=All#qr=accounting

Содержимое динамически создается с помощью JavaScript.Чтобы учесть любые задержки при создании страницы, я использую 10 секунд ожидания.

Одна из моих нескольких попыток заключалась в следующем:

class MySpider(scrapy.Spider):
name="test"

def start_requests(self):
    url = "https://www2.deloitte.com/us/en/misc/search.html#country=All#qr=accounting"
    splash_args = {
        'html': 1,
        'png': 1,
        'iframes': 1,
        'wait': 10
    }
    yield SplashRequest(url=url, callback=self.parse_result,endpoint='render.json', args=splash_args)


def parse_result(self, response):
    png_bytes = base64.b64decode(response.data['png'])
    with open('s1.png','wb') as f:
         f.write(png_bytes)
         f.close()

Я пробовал другие варианты, в том числе сценарии LUA с использованием функции ожидания элемента и других конечных точек (выбрал render.json в качествеЯ не был уверен, могут ли быть какие-то проблемы с iframe).Но я ничего не получаю на странице результатов, и я получаю только следующую страницу вращающегося колеса:

enter image description here

Копирование и вставка URL в браузер, этозагрузка результатов занимает около одной секунды.Я понятия не имею, где искать решение.

Наконец, что меня полностью отбрасывает, так это использование того же сценария с удаленным сегментом страны, т.е.

https://www2.deloitte.com/us/en/misc/search.html#qr=accounting

все работает нормально и как положено.Однако, даже если я использую эту версию сегмента за пределами страны, когда я пытаюсь загрузить следующую страницу, выдав другой SplashRequest с обновленным URL-адресом, включая # p = 2, то снова возникает та же проблема: я просто получаю пустую страницу контента.

Последняя версия Splash 3.1.1 от докера в Windows 10

...