بهترین زبان برنامه نویسی برای این کار پایتون میباشد ، با جاوا اسکریپت و jquery نمیشه همچین کاری کرد (میشه ها ، منتها برای این کار ساخته نشده)
site crawler سرچ کن
سلام من این کد رو دارم فقط میخوام برای چند تا سایت بتونم استفاده کنم
(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);
})();
@farzanehjafari5
سلام وقت بخیر
از پکیج زیر میتونید استفاده کنید که با php نوشته شده
https://symfony.com/doc/current/components/dom_crawler.html
با nodejs هم این کار امکان پذیره...
سلام شما میتونی از بعضی از سایتها تو اینسپکت بگردی و دنبال یه آرایه باشی که میتونی آدرس اون آرایه رو دریافت کنی و هر جای سایت خودت استفاده کنی ، یه جوری مثل api هست ولی اگه اون وجود نداشت باید خودت خزنده تعریف کنی که هر سایت هم با سایت های دیگه کاملا فرق میکنه ، برای هر سایت باید خزنده مربوط به خودشو بنویسی.این سوالو پرسیدی رفتم یکی از سایت های معروف رو دیدم که راحت میشه همین چیزهایی رو که گفتی راحت از سایتشون بدون اینکه بیایید رباط یا crowler بنویسید راحت بدست بیارید
اینم یه لینک که می تونید استفاده کنید .
https://www.digikala.com/recommendation/v1/
@erfanhemmati سلام
این پکیجی که معرفی کردید قابلیت استخراج اطلاعات یک فرم در صفحات متفاوت با آیدی متفاوت که در داشبرود پس از لاگین شدن هست را داره ؟
مثلا اول باید لاگین کنه توی اکانت با یوزر و پسوردی که میدیم و بعدش به صورت زیر لینک ها را باز کنه و اطلاعات فرم ها را برداره
example.com/admin/user/223
example.com/admin/user/224
example.com/admin/user/225
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟