Я использую следующий код для запроса https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2
#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:
const puppeteer = require('puppeteer');
const fs = require('fs').promises;
const url = process.argv[2];
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
try {
await page.goto(url, { waitUntil: 'networkidle2' });
const content = await page.content();
//console.log(content);
page.on('response', async response => {
console.log("xxx" + response.url());
response.buffer().then(function(data) {
fs.writeFile('/tmp/response.json', data);
//console.log(data);
});
});
const linkHandlers = await page.$x('//div[@data-ga-category = "GeneHancer"]//a[@data-role = "show-all"]');
if (linkHandlers.length > 0) {
await linkHandlers[0].click();
} else {
throw new Error("Link not found");
}
const content1 = await page.content();
//console.log(content1);
} catch (e) {
console.error(e);
process.exit(1);
} finally {
await browser.close();
}
})();
Команда вызывается таким образом.
./main.js 'https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2'
Но строка console.log("xxx" + response.url());
не вызывается.
Когда я раскомментирую //console.log(content1);
, можно напечатать URL https://www.genecards.org/gene/api/data/Enhancers?geneSymbol=BSCL2
. Но в печатном контенте не все записи, показанные в таблице GeneHancer (GH) Regulatory Elements for BSCL2 Gene
.
Я думаю, что эффект click()
не был достигнут полностью. Как ждать, пока он полностью обновит веб-страницу? А как показать содержание https://www.genecards.org/gene/api/data/Enhancers?geneSymbol=BSCL2
при получении ответа?