google-chrome - 使用 Artoo.js 和 Google Puppeteer 进行网页抓取

原文 标签 google-chrome web-scraping puppeteer google-chrome-headless

我似乎无法使用 Artoo.jsPuppeteer .

我尝试通过 npm install artoo-js 使用它,但它没有用。

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

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

如果是这样,我会喜欢如何注入(inject) Artoo.js 的代码片段。

最佳答案

我刚刚尝试了 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...

关于google-chrome - 使用 Artoo.js 和 Google Puppeteer 进行网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890994/

相关文章:

javascript - 动态更改javascript中if语句中的条件

javascript - 如果 TABLE 元素有边框,则不同的 offsetLeft(IE 与 Chrome)

javascript - "toLocaleString"在不同的浏览器上给出不同的输出

python - 网页抓取 : output different to original data

node.js - 使用 Tor 运行 Puppeteer

google-chrome - Chrome 80 允许不安全的 SameSite=None cookie

python - 使用scrapy避免在网站上被禁止

python - BeautifulSoup4返回错误的HTML?

electron - Puppeteer:为不同平台下载 Chromium

javascript - 如何在 Puppeteer 中实现 page.type()?