如何使用 Puppeteer 单击 PDF 页面上的下载按钮?
How can you click on the download button on a PDF page with Puppeteer?
我在浏览器中打开一个 PDF 页面,我正在尝试单击右上角的下载按钮。为了清楚起见,添加了这张照片。我试过右键单击按钮,同时选择 CSS 选择器和 XPath,但在我的代码中,它没有显示为元素。我做错了什么?
这是我的参考代码。
page.goto(url);
page.click([link that opens up new tab]);
const [tab1, tab2, tab3] = await browser.pages();
await tab3.click("#download");
你可以使用这个非常简单的代码:
from urllib import request
url = 'https://dagrs.berkeley.edu/sites/default/files/2020-01/sample.pdf'
request.urlretrieve(url, 'sample.pdf')
我设法使用此处发布的第二个解决方案解决了我的问题:How to download a pdf that opens in a new tab in puppeteer?。基本上,使用 puppeteer extra,我更改了单击 link 以手动触发下载的行为。
puppeteer.use(require('puppeteer-extra-plugin-user-preferences')({
headless: false,
timeout: 30000,
ignoreHTTPSErrors: true,
userPrefs: {
download: {
prompt_for_download: false,
open_pdf_in_system_reader: true
},
plugins: {
always_open_pdf_externally: true
}
}
}));
let browser = await puppeteer.launch();
let page = await browser.newPage();
...
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './'});
感谢您的帮助!
我在浏览器中打开一个 PDF 页面,我正在尝试单击右上角的下载按钮。为了清楚起见,添加了这张照片。我试过右键单击按钮,同时选择 CSS 选择器和 XPath,但在我的代码中,它没有显示为元素。我做错了什么?
这是我的参考代码。
page.goto(url);
page.click([link that opens up new tab]);
const [tab1, tab2, tab3] = await browser.pages();
await tab3.click("#download");
你可以使用这个非常简单的代码:
from urllib import request
url = 'https://dagrs.berkeley.edu/sites/default/files/2020-01/sample.pdf'
request.urlretrieve(url, 'sample.pdf')
我设法使用此处发布的第二个解决方案解决了我的问题:How to download a pdf that opens in a new tab in puppeteer?。基本上,使用 puppeteer extra,我更改了单击 link 以手动触发下载的行为。
puppeteer.use(require('puppeteer-extra-plugin-user-preferences')({
headless: false,
timeout: 30000,
ignoreHTTPSErrors: true,
userPrefs: {
download: {
prompt_for_download: false,
open_pdf_in_system_reader: true
},
plugins: {
always_open_pdf_externally: true
}
}
}));
let browser = await puppeteer.launch();
let page = await browser.newPage();
...
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './'});
感谢您的帮助!