Почему всплеск скрапа возвращает мне исходный URL? - PullRequest
0 голосов
/ 29 сентября 2019

Прошло какое-то время, но я, наконец, понимаю, откуда возникают расхождения!

scrawl crawl MeetupGetParticipants с URL https://www.meetup.com/Google-Cloud_Meetup_Singapore_by_Cloud-Ace/events/264513425/attendees/

[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x04E0BD30>
[s]   item       {}
[s]   request    <GET http://meetup.com/Google-Cloud_Meetup_Singapore_by_Cloud-Ace/events/264513425/attendees/ via http://localhost:8050/render.html>
[s]   response   <200 http://meetup.com/Google-Cloud_Meetup_Singapore_by_Cloud-Ace/events/264513425/attendees/>
[s]   settings   <scrapy.settings.Settings object at 0x04E0BC70>
[s]   spider     <MeetupGetParticipants 'MeetupGetParticipants' at 0x4ff0450>

Почему Splash возвращает исходный URL?Разве цель Splash не состоит в том, чтобы вернуть тот, который отображается render.html?То, что я хочу, является результатом http://localhost:8050/render.html?url=https://www.meetup.com/Google-Cloud_Meetup_Singapore_by_Cloud-Ace/events/264513425/attendees/ (который дает мне отрендеренную веб-страницу).

В принципе, я мог бы заставить его работать сам, просто обманув URL-адрес ... Здесь я кое-что не понимаю.

1 Ответ

0 голосов
/ 29 сентября 2019

Похоже, я мог бы заставить его работать с хорошим сценарием lua :) Он возвращает обработанный ответ json со всем, что мне нужно.

def start_requests(self):
        lua_script = """
        function main(splash)
            assert(splash:go(splash.args.url))
            while not splash:select('.attendee-item') do
                splash:wait(0.1)
            end
            return {html=splash:html()}
        end
        """

        yield SplashRequest(url=self.url, callback=self.parse,
                            endpoint='execute',
                            args={'lua_source': lua_script,
                                  'wait': 5,
                                  },
                            )
...