我正在尝试从此 NCBI.gov 页面抓取HTML。我需要包含 #see-all URL 片段,以确保获取搜索页,而不是从错误的基因页面https://www.ncbi.nlm.nih.gov/gene/119016检索 HTML。
URL 片段不会传递到服务器,而是由页面客户端的 JavaScript 使用(在这种情况下)创建完全不同的 HTML,这是当您使用浏览器进入页面并“查看页面源代码”时获得的 HTML,也是我想要检索的 HTML。R readLines() 忽略后面带有 # 的 URL 标签
我首先尝试使用phantomJS,但它只返回了描述在此处引用错误:找不到变量 Map,似乎是由于phantomJS不支持NCBI正在使用的某些功能,从而消除了这个解决方案的可能性。
我通过使用以下JavaScript,并通过node.js进行评估,更成功地使用了Puppeteer:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
'https://www.ncbi.nlm.nih.gov/gene/?term=AGAP8#see-all');
var HTML = await page.content()
const fs = require('fs');
var ws = fs.createWriteStream(
'TempInterfaceWithChrome.js'
);
ws.write(HTML);
ws.end();
var ws2 = fs.createWriteStream(
'finishedFlag'
);
ws2.end();
browser.close();
})();
但是,这返回的似乎是预渲染的 HTML。我应该如何(通过编程)获取在浏览器中得到的最终 HTML 代码?