PDA

View Full Version : طریقه خواندن اطلاعات از یک وبسایت ؟(مثل اپدیت شدن یک برنامه)



RAYMOON
شنبه 05 شهریور 1390, 22:43 عصر
سلام به همگی نیاز به برنامه ای دارم که اگه من درون یک پیچ وبسایت یک خبر رو میزنم و این خبر در برنامه من که تحت وب هست به اطلاع کاربر برسه

مثال : مثلا یک سایت خبری داریم اگر خبر جدید بیرون اومد این خبر توی برنامه ای که کاربرا از من توی سایتشون دارن نمایش بده

توجه مثال خبر بود در واقع موضوع اصلی اینه که وقی من برنامه ای جدید رو میدم بیرون کاربرای من باخبر بشوند از اپدیت برنامه شون و بیان برای اپ دیت کردن برنامشون به سایت

برنامه من یک ماژول هست که می خوام یک قسمت به روزرسانی به اون اضافه کنم که وقتی کاربر اونو بزنه چک کنه ببینه نسخه جدید بیرون اومده یانه

و این موضوع هم اینجوری باشه که من یک پیج توی سایتم میزنم و نسخه های جدید رو توی اون میزنم و برنامه من که دست کاربرا هستش چک کنه ببینه نسخه برنامه ای که من توی اون پیج زدم چنده و اونو مقایسه کنه اگر دید نسخه بالاتر است اونو اطلاع بده

دوستان اگر امکان داره کمک کنند متشکر میشم
مرسی

amin1softco
شنبه 05 شهریور 1390, 23:30 عصر
شما باید از توابع xml استفاده کنید


<?php

$doc = new DomDocument;

$doc->validateOnParse = true;
$doc->loadHtml(file_get_contents('http://test.com/index.php'));
.
.
.

?>

RAYMOON
یک شنبه 06 شهریور 1390, 16:59 عصر
متشکر از شما اگر امکان داره با یک مثال عملی تکمیل کنید و یا اگر روش های دیگری هم موجود هست بفرماید مرسی

amin1softco
یک شنبه 06 شهریور 1390, 17:53 عصر
مثلاً شما می خواهید محتویات تاریخ دوره های سایت برنامه نویس رو در سایت خودتون لود کنید(کادر زرد رنگ زیر تبلیغات) که کدش این می شه :


$doc = new DomDocument();
$doc->validateOnParse = true;

$doc->loadHtml(file_get_contents('http://barnamenevis.org/index.php'));

echo $doc->getElementById('navbar_notice_12')->nodeValue;

idocsidocs
یک شنبه 06 شهریور 1390, 18:35 عصر
مثلاً شما می خواهید محتویات تاریخ دوره های سایت برنامه نویس رو در سایت خودتون لود کنید(کادر زرد رنگ زیر تبلیغات) که کدش این می شه :


$doc = new DomDocument();
$doc->validateOnParse = true;

$doc->loadHtml(file_get_contents('http://barnamenevis.org/index.php'));

echo $doc->getElementById('navbar_notice_12')->nodeValue;

توی سایت کلوب وقتی آدرس یه وبلاگ رو وارد می کنید، جدیدترین مطالب این وبلاگ یا وب سایت نمایش داده می شه. بنظرم این رو از توی فیسبوک کپی برداری کردن.

توی روشی که شما توضیح دادید باید آی دی تگها رو داشته باشیم تا بتونیم محتویات رو نمایش بدیم. می شه بگید سایتهایی مثل فیسبوک چطور می تونن محتویات این سایت و وبلاگ رو توی پروفایل کاربر نمایش بدن؟

amin1softco
یک شنبه 06 شهریور 1390, 18:46 عصر
$root = $doc->documentElement;
$children = $root->childNodes;
foreach ($children as $elem) {
echo trim($elem->nodeValue)."\n";}

یا اینکه از getElementsByTagName استفاده کنی ...........

A B C D
یک شنبه 06 شهریور 1390, 19:48 عصر
مثلاً شما می خواهید محتویات تاریخ دوره های سایت برنامه نویس رو در سایت خودتون لود کنید(کادر زرد رنگ زیر تبلیغات) که کدش این می شه :


$doc = new DomDocument();
$doc->validateOnParse = true;

$doc->loadHtml(file_get_contents('http://barnamenevis.org/index.php'));

echo $doc->getElementById('navbar_notice_12')->nodeValue;

احتمالا باید خطاها رو هم هندل کنیم.
مثلا وقتی من اینو تست کردم خطای 503 Service Unavailable، بخاطر اینکه اون موقع سایت برنامه نویس به حالت کما رفته بود!
ایده ای برای هندل کردن خطاها داری؟

amin1softco
یک شنبه 06 شهریور 1390, 23:54 عصر
این یک مثال بود حالا چه گیری به هندل کردن دادید؟


$doc = new DomDocument();
$doc->validateOnParse = true;
$content=@file_get_contents('http://barnamenevs.org/index.php');
if ($content){
@$doc->loadHtml($content);
echo $doc->getElementById('navbar_notice_12')->nodeValue;
}else{
echo 'error';// Handle error

};

A B C D
دوشنبه 07 شهریور 1390, 05:10 صبح
این یک مثال بود حالا چه گیری به هندل کردن دادید؟
آخه هندل کردن خیلی خوبه!!

هیچی چون دیدم کارت انگار بد نیست خواستم ببینم ایده ای داری یا نه.

amin1softco
دوشنبه 07 شهریور 1390, 09:33 صبح
آخه هندل کردن خیلی خوبه!!

هیچی چون دیدم کارت انگار بد نیست خواستم ببینم ایده ای داری یا نه.
حاجی نگاه شما خیلی گیراست کاره ما بزرگ شده :چشمک:
خلاصه اگه ایده ای داریند بگید ما پیاده می کنیم .... ولی خوب می شه مثلاً 2-3 بار بعد از هر شکست چکش کنه اگه نشد اخطارش رو چاپ کنه....

idocsidocs
دوشنبه 07 شهریور 1390, 10:54 صبح
یکی جواب منو بده لطفا :متفکر:
توی سایت کلوب وقتی آدرس یه وبلاگ رو وارد می کنید، جدیدترین مطالب این وبلاگ یا وب سایت نمایش داده می شه. بنظرم این رو از توی فیسبوک کپی برداری کردن.

توی روشی که شما توضیح دادید باید آی دی تگها رو داشته باشیم تا بتونیم محتویات رو نمایش بدیم. می شه بگید سایتهایی مثل فیسبوک چطور می تونن محتویات این سایت و وبلاگ رو توی پروفایل کاربر نمایش بدن؟

amin1softco
دوشنبه 07 شهریور 1390, 11:23 صبح
عزیز دل برادر هر وبلاگ یک خروجی RSS داره دیگه همونو برات نشون میده

armsoftpc
دوشنبه 07 شهریور 1390, 19:10 عصر
یکی جواب منو بده لطفا :متفکر:
توی سایت کلوب وقتی آدرس یه وبلاگ رو وارد می کنید، جدیدترین مطالب این وبلاگ یا وب سایت نمایش داده می شه. بنظرم این رو از توی فیسبوک کپی برداری کردن.

توی روشی که شما توضیح دادید باید آی دی تگها رو داشته باشیم تا بتونیم محتویات رو نمایش بدیم. می شه بگید سایتهایی مثل فیسبوک چطور می تونن محتویات این سایت و وبلاگ رو توی پروفایل کاربر نمایش بدن؟
به نام خدا
با سلام
دوست عزیز شما اول فکر کن بعد پست بزن!
آخه این چه سوالیه!

idocsidocs
دوشنبه 07 شهریور 1390, 19:57 عصر
عزیز دل برادر هر وبلاگ یک خروجی RSS داره دیگه همونو برات نشون میده

می شه بگید چطوری مسیر آر اس اس سایت یا وبلاگ رو بصورت اتوماتیک پیدا می کنن؟

binyaft
دوشنبه 07 شهریور 1390, 20:18 عصر
می شه بگید چطوری مسیر آر اس اس سایت یا وبلاگ رو بصورت اتوماتیک پیدا می کنن؟
بعضی از سایتها تو یکی از تگهای Meta ادرس فید رو میذارن

در مورد خطا هایی که ممکنه باهاش مواجه بشیم ، get_headers رو اجرا کنید ، بعد ببینید کد استاتوس چیه طبق همون برنامه رو کنترل کنید .

resatak
سه شنبه 08 شهریور 1390, 11:20 صبح
$root = $doc->documentElement;
$children = $root->childNodes;
foreach ($children as $elem) {
echo trim($elem->nodeValue)."\n";}

یا اینکه از getElementsByTagName استفاده کنی ...........

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

resatak
سه شنبه 08 شهریور 1390, 11:29 صبح
شرمنده خودم متوجه شدم ولی یه سئوال دارم چه طور میشه گفت مثلا بین تگها لینک یعنی <a></a> را به عنوان مثال بخونه

amin1softco
سه شنبه 08 شهریور 1390, 13:06 عصر
$doc = new DomDocument();
//$doc->validateOnParse = true;
$content=file_get_contents('http://barnamenevis.org');
if ($content){
@$doc->loadHtml($content);
$items = $doc->getElementsByTagName('a');
for ($i = 0; $i < $items->length; $i++)
echo $items->item($i)->nodeValue."#".$items->item($i)->getattribute('href')."<br>";
}else{
echo 'error';
};

idocsidocs
سه شنبه 08 شهریور 1390, 15:54 عصر
$doc = new DomDocument();
//$doc->validateOnParse = true;
$content=file_get_contents('http://barnamenevis.org');
if ($content){
@$doc->loadHtml($content);
$items = $doc->getElementsByTagName('a');
for ($i = 0; $i < $items->length; $i++)
echo $items->item($i)->nodeValue.&quot;#&quot;.$items->item($i)->getattribute('href').&quot;<br>&quot;;
}else{
echo 'error';
};



این کد رو با کمی تغییر می شه توی قسمت ثبت لینک استفاده کرد. می شه بگید چطور می تونم با استفاده از این کد، موجود بودن لینک سایت خودم رو توی سایر سایتهایی که با من تبادل لینک کردن پیدا کنم؟ سوال دوم: اگر بخوام یه سایت که از لینک دهی مطلق استفاده نکرده رو بصورت کامل به همراه فایلها سی اس اس و جاوا اسکریپت خارجی، و تصاویر توی سایت خودم نمایش بدم به طوریکه ظاهرش تغییر نکنه (مثل سایت ترجمه آنلاین گوگل)، چه کاری باید انجام بدم؟

resatak
چهارشنبه 09 شهریور 1390, 20:39 عصر
$root = $doc->documentElement;
$children = $root->childNodes;
foreach ($children as $elem) {
echo trim($elem->nodeValue)."\n";}


یا اینکه از getElementsByTagName استفاده کنی ...........


می دونم ممکن سئوال پیش پا افتاده باشه ولی همینطور که میدونید ممکنه به کدنویس تو کدایhtml واسه تگاش style تعریف کرده باشه که خوب قطعا تو اون ; هست که باعث ارور میشه فکر کنم باید دستور replace بهش بدیم میشه راهنمایی کنید.

amin1softco
پنج شنبه 10 شهریور 1390, 12:39 عصر
این کد رو با کمی تغییر می شه توی قسمت ثبت لینک استفاده کرد. می شه بگید چطور می تونم با استفاده از این کد، موجود بودن لینک سایت خودم رو توی سایر سایتهایی که با من تبادل لینک کردن پیدا کنم؟ سوال دوم: اگر بخوام یه سایت که از لینک دهی مطلق استفاده نکرده رو بصورت کامل به همراه فایلها سی اس اس و جاوا اسکریپت خارجی، و تصاویر توی سایت خودم نمایش بدم به طوریکه ظاهرش تغییر نکنه (مثل سایت ترجمه آنلاین گوگل)، چه کاری باید انجام بدم؟

1- خوب در حلقه for یک شرط if قرار بدین اگه با سایت خوتون یکی بود پروسه مورد نظر رو اجرا کنه
2- یک تگی هست به نام iframe که اینکارو انجام میده اما با این روش بعد لود کردن بنویسید


echo $doc->saveHTML();



فکر نکنم موردی داشته باشه برای اینکه خطاها نمایش داده نشه یک علات @ بزارید اول لود کردن

@$doc->loadHtml($content);

idocsidocs
پنج شنبه 10 شهریور 1390, 14:01 عصر
1- خوب در حلقه for یک شرط if قرار بدین اگه با سایت خوتون یکی بود پروسه مورد نظر رو اجرا کنه
2- یک تگی هست به نام iframe که اینکارو انجام میده اما با این روش بعد لود کردن بنویسید


echo $doc->saveHTML();



فکر نکنم موردی داشته باشه برای اینکه خطاها نمایش داده نشه یک علات @ بزارید اول لود کردن

@$doc->loadHtml($content);
منظورم این بود که چطور می تونم آدرس فایلهای خارجی رو بدست بیارم؟
من خطاها رو نادیده می گیرم ولی می خوام آدرس فایلهای خارجی رو بدست بیارم. برای اینکار باید چیکار کرد؟

amin1softco
پنج شنبه 10 شهریور 1390, 14:36 عصر
جواب resatak (http://barnamenevis.org/member.php?94865-resatak) بود که گفتم @ بزارید احتجاجی به ریپلیس کردن نیست
آدرس سایت خارجی دیگه چیه؟! خوب اسم خوده سایت رو به url هایی که http داخلشون نیست اضافه کنید البته به نظرم از curl استفاده کنید راحت تر باشید .

RAYMOON
دوشنبه 22 خرداد 1391, 21:23 عصر
سلام به همگی
دوستان گرامی اگر ممکن بگید من چگونه قسمت search این وب سایت www.betterbooking.com رو توی وب سایت خودم نشون بدم که فقط همین قسمت توی سایت من نشون بده متشکر میشم کمک کنید

مرسی دوستان عزیز