如何在离子应用程序中抓取网页内容

时间:2019-04-15 23:46:52

标签: javascript ionic-framework web-scraping require cheerio

我目前正在构建一个离子应用程序,其功能之一是抓取网页的某些元素并将这些元素推送到Firebase(稍后将在另一种情况下显示)。 我目前正在苦苦挣扎:-)

基本上,旅程是这样的:  1-用户在应用程序上通过Facebook登录  2-用户浏览网页(通过应用程序上的iframe)。  3-用户点击顶部菜单上的按钮(位于iframe上方),此按钮将触发我尝试编写的scrapeandpush函数。

我已经在服务器端测试了此功能,并尝试将其集成到我的ionic应用程序中,但是当我使用cheerio时,对于要实现的功能的可行性我持怀疑态度。

基本上,我不能使用require导入以前通过npm安装的模块request和cheerio。 当我触发以下功能时,在控制台中出现以下错误:ReferenceError:未定义

我尝试以多种不同的方式导入需求,但不确定是否可以在离子项目中使用它。

prod.scrapeAndPush = function (uid) {

const request = require('request');
const cheerio = require('cheerio');


var database = firebase.database();
var ref = database.ref('productspushed'+'/'+ uid);


request('here_comes_the_url_the_user_is_currently_navigating_on', function (error, response, html) {
    if (!error && response.statusCode == 200) {
    const $ = cheerio.load(html);

    $('li.productList-item').each((i, element) => 
            {
    const title = $(element).find('p.productTile-title').text();

    const price = $(element).find('p.product-price--tile').eq(0).text().replace(/€/, '');

    const url = $(element).find('a.js-productTile-link').attr('href');



            var data = {title: title, 
            price: price,
            url: url,

            };

            ref.push(data);  

            });

        }



        });
        setTimeout((function() {  
            return process.kill(process.pid);
        }), 1500);
    };

我的问题是:  有没有办法调整我的代码以获得预期的结果?

如果没有,有人可以给我一个关于如何重写我的函数的提示,以便使用另一个与ionic更兼容的库来刮页面的方法吗?

如果您能给我一个提示,我将非常感激。

一切顺利。

谢谢。

0 个答案:

没有答案