3

ApifyZapierを使用して、i) パスワードで保護された Web ページへのログインと、ii) ボタンのクリックを自動化する必要があります。これどうやってするの?

Actor で Puppeteer を使用する必要があると思いますが、方法がわかりません。

ターゲット URL は随時変更されます。それらの形式はhttps://studio.example.com/products/videocloud/media/videos/{id_code}where {id_code}is です。たとえば、6091481925001.

1. ザピア

Zapier は、作業を行うために Apify アクターを呼び出す必要があります。既存の zap のアクションは、すでに動的 にアクセスできます{id_code}。追加のアクションは、Apify に「Run Actor」を実行する必要があり、Apify にいずれか{id_code}または完全な URLhttps://studio.example.com/products/videocloud/media/videos/6091481925001を渡して実行します。

「入力本文」を介してApifyに値を適切に渡すにはどうすればよいですか?

ここに画像の説明を入力

2.ログイン

認証されていない状態でアクセスすると、ページは以下のログイン フォームにリダイレクトされますhttps://signin.example.com/?redirect=https%3A%2F%2Fstudio.example.com%2Fproducts%2Fvideocloud%2Fmedia%2Fvideos%2F6091481925001

  • 「メールアドレス」(inputid="email"name="email"
  • 「パスワード」(inputid="password")name="password"
  • 「サインイン」ボタン(buttonid="signinButton")type="submit"

アクターを使用してここにログインするにはどうすればよいですか?

ここに画像の説明を入力

3. クリック

認証されると、ターゲット ページが表示されます。ボタン「アクティブ化」を含むボタンバーがあります(buttonその子spanテキストは、クリックが許可されている場合にのみ「アクティブ化」する必要があります)。

(参考までに - クリックすると、ボタンのテキストが「非アクティブ化」になるはずです)。

ここでApifyに「アクティブ化」ボタンをクリックさせるにはどうすればよいですか?

ここに画像の説明を入力

私が理解しているように、これはスクレイピングジョブではありません。Web ページからデータを返すつもりはないため、apify/puppeteer-scraperまたはapify/web-scraperを使用しないでください。

アップデート:

これまでのところ、私は次のものを持っています。ただし、Apify 内の Puppeteer はタイムアウトします。最大 9000 ミリ秒までのかなり長い値で、必ずしもページ読み込みの問題ではないことを示唆しています (?)。

const Apify = require('apify');

    Apify.main(async () => {



        // Get credentials
        const { EMAIL, PASSWORD } = Apify.getEnv();         // Docs for using values: https://apify.com/docs/actor#source-env-vars


        // Launch Puppeteer
        const browser = await Apify.launchPuppeteer();
        const page = await browser.newPage();
        await page.goto('https://signin.example.com/login');

        // Login
        await page.type('#email', process.env.EMAIL);
        console.log('Attempted to enter email');

        await page.type('#password', process.env.PASSWORD);
        console.log('Attempted to enter password');

        await page.click('#signinButton');
        console.log('Attempted to click button');    

        // Times-out here

        await page.waitForNavigation();
        console.log('Attempted to wait for navigation');

        // Get cookies
        const cookies = await page.cookies();
        console.log('Attempted to wait for cookies');

        await browser.close();

        console.log('Done.');


    });
4

2 に答える 2