راکت

استخراج اطلاعات از وب سایت

6 پاسخ

سلام دوستان وقت بخیر.
من میخواستم یه برنامه بنویسم با جاوااسکریپت که بتونم از سایت های فروشگاهی جزئیات کالا رو بردارم مثل اسم و قیمت و..... و بدون استفاده ازjquery ممنون میشم کمک کنید.

fjafari
fjafari
@farzanehjafari5
ثبت پرسش جدید

پاسخ‌ها

6
نوید
نوید
@navids

تخصص: برنامه نویس Go / Django

بهترین زبان برنامه نویسی برای این کار پایتون میباشد ، با جاوا اسکریپت و jquery نمیشه همچین کاری کرد (میشه ها ، منتها برای این کار ساخته نشده)
site crawler سرچ کن

fjafari
fjafari
@farzanehjafari5

سلام من این کد رو دارم فقط میخوام برای چند تا سایت بتونم استفاده کنم
(function () {
function extractIntFromText (elem) {
if (!elem) {
return;
}
elem = elem
.replace(/۰/g, '0')
.replace(/۱/g, '1')
.replace(/۲/g, '2')
.replace(/۳/g, '3')
.replace(/۴/g, '4')
.replace(/۵/g, '5')
.replace(/۶/g, '6')
.replace(/۷/g, '7')
.replace(/۸/g, '8')
.replace(/۹/g, '9')
.replace(/\D/g, '');
elem = parseInt(elem, 10);
return elem;
}

function extractProductData () {
    var productInfo = {};
    var sku = document.querySelector('input[name="product"]');
    if (!sku) {
        return false;
    }
    sku = sku && sku.getAttribute('value');
    productInfo['sku'] = sku;

    var title = document.querySelector('div.product span.base');
    title = title && title.innerText;
    if (!title) {
        return false;
    }
    productInfo['title'] = title;

    var image = document.querySelector('div.fotorama__stage__frame img.fotorama__img');
    image = image && image.getAttribute('src');
    productInfo['image'] = image;

    var price = document.querySelector('span.special-price span.price');
    price = price && price.innerText;
    if(!price){
        price = document.querySelector('div.price-box span.price');
        price = price && price.innerText;
    }
    price = extractIntFromText(price);
    productInfo['price'] = price;

    productInfo['currency'] = 'IRT';

    var oldPrice = document.querySelector('span.old-price span.price');
    oldPrice = oldPrice && oldPrice.innerText;
    oldPrice = extractIntFromText(oldPrice);
    var discount = 0;
    discount = (oldPrice - price) / oldPrice * 100;
    discount = Math.round(discount);
    if (discount) {
        productInfo['discount'] = discount;
    }

    var unAvailable = document.querySelector('div.unavailable');
    if (unAvailable) {
        productInfo['isAvailable'] = false;
        delete productInfo.price;
        delete productInfo.currency;
    } else {
        productInfo['isAvailable'] = true;
    }

    productInfo['category'] = [];
    var categoryList = document.querySelectorAll('div.breadcrumbs ul.items li.item a');
    for (var i = 1, size = categoryList.length; i < size; i++) {
        var item = categoryList[i];
        productInfo['category'].push(item.innerText);
    }

    return productInfo;
}

function sendData () {
    try {
        var productInfo = extractProductData();

        if (productInfo && productInfo.sku && productInfo.title && productInfo.image) {
            console.log(productInfo);
            return true;
        }
        else {
            return false;
        }
    } catch (e) {
        console.log(e);
        return false;
    }
}

if (sendData()) {
    return;
}
var retry = 0;
var intervalId = setInterval(function () {
    if (retry++ > 5 || sendData()) {
        clearInterval(intervalId);
    }
}, 1000);

})();

@navids

شاید پاسخ شما همین‌جا باشد

عرفان همتی
عرفان همتی
@erfanhemmati

تخصص: Backend Developer

@farzanehjafari5
سلام وقت بخیر
از پکیج زیر میتونید استفاده کنید که با php نوشته شده
https://symfony.com/doc/current/components/dom_crawler.html
با nodejs هم این کار امکان پذیره...

fjafari
fjafari
@farzanehjafari5

ممنون از راهنماییتون اما نمیتونم از پکیج ها استفاده کنم!!
@mrerfan.ir

داود خانی
داود خانی
@davoodkhany

تخصص: برنامه نویس لاراول و متخصص سئو

سلام شما میتونی از بعضی از سایتها تو اینسپکت بگردی و دنبال یه آرایه باشی که میتونی آدرس اون آرایه رو دریافت کنی و هر جای سایت خودت استفاده کنی ، یه جوری مثل api هست ولی اگه اون وجود نداشت باید خودت خزنده تعریف کنی که هر سایت هم با سایت های دیگه کاملا فرق میکنه ، برای هر سایت باید خزنده مربوط به خودشو بنویسی.این سوالو پرسیدی رفتم یکی از سایت های معروف رو دیدم که راحت میشه همین چیزهایی رو که گفتی راحت از سایتشون بدون اینکه بیایید رباط یا crowler بنویسید راحت بدست بیارید
اینم یه لینک که می تونید استفاده کنید .

https://www.digikala.com/recommendation/v1/
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@erfanhemmati سلام
این پکیجی که معرفی کردید قابلیت استخراج اطلاعات یک فرم در صفحات متفاوت با آیدی متفاوت که در داشبرود پس از لاگین شدن هست را داره ؟

مثلا اول باید لاگین کنه توی اکانت با یوزر و پسوردی که میدیم و بعدش به صورت زیر لینک ها را باز کنه و اطلاعات فرم ها را برداره
example.com/admin/user/223
example.com/admin/user/224
example.com/admin/user/225

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام