[英]Can I script puppeteer line by line in the node.js command line window?
我有一個網站正在嘗試自動從中抓取數據。 我有一個合法帳戶,需要通過編程收集數據來簡化生活。 問題是,對於偽造者代碼的每次迭代,我的帳戶都重新登錄,並且經過幾輪編碼后,我從服務(MLS)收到一封電子郵件,他們注意到我的帳戶存在可疑活動。 我的問題是,是否可以實時編寫操縱p的代碼,因此我可以在同一會話中測試不同的代碼行?
到目前為止,我已經嘗試過了:
const puppeteer = require('puppeteer');
const fs = require("fs");
const browser = puppeteer.launch({headless: false, ignoreHTTPSErrors: true, args: ['--start-maximized'], defaultViewport: null, slowMo: 150})
const page = browser.newPage();
page.goto('https://idp.sdmls.com/idp/Authn/UserPassword',{waitUntil: 'networkidle2'});
Chromium窗口打開,但沒有其他顯示。 我在命令行窗口中得到這個:
> const puppeteer = require('puppeteer');
undefined
> const fs = require("fs");
undefined
>
> const browser = puppeteer.launch({headless: false, ignoreHTTPSErrors: true, args: ['--start-maximized'], defaultViewport: null, slowMo: 150})
undefined
> const page = browser.newPage();
TypeError: browser.newPage is not a function
> page.goto('https://idp.sdmls.com/idp/Authn/UserPassword',{waitUntil: 'networkidle2'});
ReferenceError: page is not defined
>
puppeteer.launch
是一個異步函數,它返回Promise
。 這意味着您應該在async
函數中await
它,或者將后續代碼放入.then()
。
由於要使用Node.js命令行,因此無法直接await
它。 有幾種選擇:
選項1:將您的代碼放入.then()
:
$ node
Welcome to Node.js v12.1.0.
Type ".help" for more information.
> const options = {headless: false, ignoreHTTPSErrors: true, args: ['--start-maximized'], defaultViewport: null, slowMo: 150};
...
> const puppeteer = require('puppeteer');
undefined
> const browserPromise = puppeteer.launch(options);
undefined
> const pagePromise = browserPromise.then(browser => { return browser.newPage(); });
undefined
> pagePromise.then(page => { page.goto('http://stackoverflow.com'); });
Promise { <pending> }
選項2(適合調試,但不要嘗試在實際代碼中使用 ):將promise結果保存到全局對象中並重用。
> puppeteer.launch(options).then(browser => { global.browser = browser; });
Promise { <pending> }
等待一段時間,直到承諾解決並分配了全局對象,然后繼續:
> global.browser.newPage().then(page => { global.page = page; });
Promise { <pending> }
再次等待,然后繼續:
> global.page.goto('http://stackoverflow.com')
Promise { <pending> }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.