【问题标题】:Using Artoo.js with Google Puppeteer for Web Scraping使用 Artoo.js 和 Google Puppeteer 进行网页抓取
【发布时间】:2023-04-10 01:41:01
【问题描述】:

我似乎无法将Artoo.jsPuppeteer 一起使用。

我尝试通过npm install artoo-js 使用它,但它不起作用。

我也尝试使用 Puppeteer 命令page.injectFile(filePath) 注入构建路径分布,但没有运气。

有人能够成功实现这两个库吗?

如果是这样,我会喜欢如何注入 Artoo.js 的代码 sn-p。

【问题讨论】:

标签: google-chrome web-scraping puppeteer google-chrome-headless


【解决方案1】:

我刚刚为 another answer 尝试了 Puppeteer,我想我也可以尝试 Artoo,所以你去吧 :)

(第 0 步:如果没有,请安装 Yarn

yarn init
yarn add puppeteer
# Download latest artoo script, not as a yarn dependency here because it won't be by the Node JS runtime
wget https://medialab.github.io/artoo/public/dist/artoo-latest.min.js

将此保存到index.js

const puppeteer = require('puppeteer');
(async() => {
    const url = 'https://news.ycombinator.com/';
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    // Go to URL and wait for page to load
    await page.goto(url, {waitUntil: 'networkidle'});
    // Inject Artoo into page's JS context
    await page.injectFile('artoo-latest.min.js');
    // Sleeping 2s to let Artoo initialize (I don't have a more elegant solution right now)
    await new Promise(res => setTimeout(res, 2000))
    // Use Artoo from page's JS context
    const result = await page.evaluate(() => {
        return artoo.scrape('td.title:nth-child(3)', {
            title: {sel: 'a'},
            url: {sel: 'a', attr: 'href'}
        });
    });
    console.log(`Result has ${result.length} items, first one is:`, result[0]);
    browser.close();
})();

结果:

$ node index.js 
Result has 30 items, first one is: { title: 'Headless mode in Firefoxdeveloper.mozilla.org',
url: 'https://developer.mozilla.org/en-US/Firefox/Headless_mode' }

这太有趣了,不容错过:现在 HackerNews 的头条文章是关于 Firefox Headless...

【讨论】:

  • 是的,不要使用 Artoo 的 NPM 包,如果我理解正确的话,它们不适合网页抓取(在浏览器 JS 运行时从 DOM 中提取数据),它们适用于从其他 XML 中提取数据来自 Node JS 运行时的文档。我使用的网址是他们在书签中使用的网址。
  • 关于等待Artoo初始化,可以简单使用:page.waitFor(2000)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
相关资源
最近更新 更多