JSPM

@xkairo/scrapy-puppeteer-plugin

0.1.1
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • 0
    • Score
      100M100P100Q47737F
    • License MIT

    Puppeteer integration to Scrapy library

    Package Exports

    • @xkairo/scrapy-puppeteer-plugin
    • @xkairo/scrapy-puppeteer-plugin/dist/main.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@xkairo/scrapy-puppeteer-plugin) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Scrapy puppeteer plugin

    Este es un servicio que provee la funcionalidad de puppeteer para la libreria Scrapy . Permite el uso de plugins de puppeteer-extra-plugin, inyectandolos en una propiedad plugins dentro de providers y unicamente es una capa sobre el modulo de puppeteer. Este servicio es el que se usa en el ejemplo de uso.

    Instalacion

    Antes debe tener instalado la libreria scrapy para poder utilizarlo en ella

        npm i @xkairo/scrapy

    Despues de instalar scrap, ya puede instalar esta libreria

        npm i @xkairo/scrapy-puppeteer-plugin

    Configuracion

    Para agregar una configuracion a puppeteer debe usar un provider, en el cual agregaras los plugins propios de puppeteer-plugin-extra y la configuracion de la instancia de puppeteer. El provider debera agregarlo en la configuracion de scrapy.

        export const puppeteerProvider: Registable = {
            plugins: {
                useValue: [],
            },
            config: {
                useValue: {
                    headless: true,
                },
            },
        };
    
        const filepath = join(__dirname, "result.csv");
        const config: ScraperConfigInterface<UserInterface> = {
          uploaders: [LocalUploader],
          processors: [CsvProcessor],
          scrapers: [PageScraper],
          services: [Puppeteer], // <---- Note como aca se agrega el servicio para luego injectarlo
          providers: [
            puppeteerProvider, // <---- Note como se carga el provider con la configuracion
            {
              filepath: {
                useValue: filepath,
              },
            },
          ],
          exceptionHandler: ExceptionHandler,
        };
    
        const scraper = new Scraper(config);
    
        await scraper.init();

    Uso

    Hay que tener en cuenta que la libreria scrapy utiliza un sistema de injeccion de dependencias con inversion de control, por lo que usted no deberia instanciar este servicio, sino que injectarlo.

        constructor(
            @Inject(Puppeteer) private puppeteerService: Puppeteer
        ) {}

    Luego podra acceder al browser con getBrowser:

        async commonFunction() {
            const browser = await this.puppeteerService.getBrowser(); // <---- Obtenemos un browser de puppeteer
    
            browser.newPage() // <---- Puedes usar cualquier metodo de browser
        }