Python scrapy crawler - как выполнить мой scrapy spider с помощью вызова curl из другого python приложения - PullRequest
0 голосов
/ 31 марта 2020

На самом деле я создаю приложение, в котором у меня есть требование удалить данные с сайта и показать ответ на мой сайт. Это приложение для поиска рейсов. Поэтому, когда пользователь ищет в любом рейсе указанную c дату, я хочу передать эту указанную c дату моему пауку-скрапу и выполнить ее из моего веб-приложения с помощью вызова curl и вернуть проанализированный ответ обратно в мое приложение взамен , Как мне этого добиться?

Ниже приведен код моего паука, на котором сейчас я сохраняю свои записанные данные в файл HTML. Тот же ответ, который я хочу использовать в качестве ответа скручивания.

import scrapy
from scrapy_splash import SplashRequest

class SplashSpider(scrapy.Spider):
    name = "SplashSpider"

    lua_script = """
                    function main(splash, args)
                              assert(splash:go{
                                splash.args.url,
                                http_method=splash.args.http_method,
                                body=splash.args.body,
                              })
                              assert(splash:wait(5))
                              return {
                                html = splash:html(),
                              }
                            end
                        """

    def start_requests(self):
        url = 'https://www.example.com/air/booking/select.html?adultPassengersCount=1&departureDate=2020-05-29&departureTimeOfDay=ALL_DAY&destinationAirportCode=LGA&fareType=USD&int=HOMEQBOMAIR&originationAirportCode=IAD&passengerType=ADULT&reset=true&returnDate=2020-06-05&returnTimeOfDay=ALL_DAY&seniorPassengersCount=0&tripType=roundtrip'
        # post_data = 'foo=bar'
        yield SplashRequest(url, self.parse, endpoint='execute',
                            magic_response=True, meta={'handle_httpstatus_all': True},
                            args={'lua_source': self.lua_script})

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)
...