PDA

View Full Version : نحوه دريافت اطلاعات از ساير سايتها



bps20590
چهارشنبه 21 اسفند 1387, 10:51 صبح
با سلام
من ميخواه اطلاعات نتايج زنده مسابقات مختلف مانند فوتبال وبسكتبال ايران وجهان را از سايتهايي مانند
http://www.livescore.com
يا
http://www.soccerway.com
دريافت كرده وبا تغيير نام انگليسي آنها به فارسي درسايتم قرار دهم لطفا راهنمايي كنيد كه اينكار رو چطور انجام بدم

amirkh
چهارشنبه 21 اسفند 1387, 11:13 صبح
دوست عزیز من خودم یه مدتی هست دنبال این مسله هستم ولی تا به امروز به هیچ نتیجه مناسبی نرسیدم

یک سری از livescore webmaster ها هستن که به شما این سرویس رو میدن ولی بهتون خروجی نمیدن تا خودتون بتونین اونطور که میخواین نتایج رو روی سایتتون به نمایش در بیارین مثلا اسم تیم ها رو فارسی بنویسین یا خیلی چیز های دیگه.

من به این دو سایت ایمیل زدم تا اینکه شاید یه جوری بهم خروجی بدن تا مشکلم برطرف بشه.

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

bps20590
چهارشنبه 21 اسفند 1387, 22:45 عصر
پس سايتهايي مانند adelane.com و bwin90.comو btaraf.com اين اطلاعات رو ازكجا درميارن وداخل سايتشون قرار ميدن

amirkh
پنج شنبه 22 اسفند 1387, 14:06 عصر
منم نمیدونم ولی یک سری از دوستان واردتر میگن اینها از یک نوع dll استفاده میکنن که با sms دادن به یک شماره از قبل تعیین شده نتیجه بازی رو به روز میکنن حالا امکان داره این sms از یک فرد یا یک گروه ارسال بشه.

mohammad-gh
چهارشنبه 01 اردیبهشت 1389, 20:26 عصر
آقا من هم شديدا دنبال اين مسئله هستم اگر كسي اطلاعاتي داره به من هم بگه
تا اين حد مي دون كه يه كد جاوا اسكريپت برا ش نوشته شده
و از اون استفاده مي شه

trade_mark
چهارشنبه 01 اردیبهشت 1389, 22:38 عصر
سلام دوستان
به نظر من این سایت ها از خروجی rss سایت های خارجی استفاده می کنند و با یه کد جاوا اسکریپ یا ajax صفحه رو بروز رسانی می کنند

امیـرحسین
چهارشنبه 01 اردیبهشت 1389, 22:49 عصر
به نظر من تنها راه اینه که سایتی رو پیدا کنید که API یا RSS در اختیارتون بذاره. تعداد سایتهایی که چنین محتوایی دارند خیلی زیاده. کافیه یکیشون چنین امکانی داشته باشه.
غیر از اون، راههای کثیف و غیراستانداردی هم وجود داره که بدون چنین امکاناتی بشه اطلاعات رو بازیابی کرد. مثل گرفتن محتوای سایت و پردازش کدهای HTMLاش. مثلا کدهای صفحه رو تحلیل کنید و جای اطلاعات مورد نظرتون رو کدهای HTML سایت پیدا کنید و کدهایی بنویسید که اطلاعات رو از اون مکانهای خاص بیرون بکشند. این روش جواب میده ولی سایت مرجع می تونه با یک تغییر کوچیک، خروجی اطلاعات شما رو به فاجعه تبدیل کنه.

mohammad-gh
پنج شنبه 02 اردیبهشت 1389, 10:32 صبح
ببينيد من يه نمونه مي نويسم تا بهتر متوجه بشيم
ساتهاي پيش بيني فوتبال آمدند از اين كدها در صفحه live.php استفاده كردند


<script language='javascript' >
var xmlHttp;
function transData(id) {
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert ('Ajax not support');
return;
}
var v1=encodeURIComponent(id);
var url = 'view_live.php';
url = url + '?v1=' + v1;
url = url + '&sid=' + Math.random();
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open('GET', url, true);
xmlHttp.send(null);
}

function stateChanged() {
if (xmlHttp.readyState == 1 || xmlHttp.readyState == 'loading')
{ document.getElementById('response').style.display= 'none';
document.getElementById('loading').style.display=' block';
}
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {
document.getElementById('loading').style.display=' none';
document.getElementById('response').style.display= 'block';
var myarray=xmlHttp.responseText;
document.getElementById('response').innerHTML = xmlHttp.responseText;
}
}
function GetXmlHttpObject() {
var xmlHttp = null;
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
}
}
return xmlHttp;}
</script>

<body onload="transData(1)">
ضمن اينكه جاوا اسكريپتهاي amin و calander هم در پوشه مربوطه موجود است (من اين فايها رو دارم)
سوالي كه من دارم اين است كه آيا اينها قسمتي در مديريت سايت براي اينها دارند يا اين نتايج بدون دخالت مدير سايت و مستقيم از سايت ديگر فراخوانده مي شوند
من نتوانستم از اين كدها استفاده اي كنم!

yasgig
پنج شنبه 02 اردیبهشت 1389, 11:33 صبح
همون طور که دوست عزیزمون آقای امیر حسین گفتند اگه سایتی خروجی نده میشه از عبارات منظم استفاده کرد و سورس مورد نیاز رو به دست آورد.(منظورم همون قسمتی هستش که می خوایم)من الان خودم از این روش استفاده می کنم و اخبار خبرگزاری ها رو دریافت می کنم.فقط کافیه یه عبار منظم توی سورس سایت پیدا کنین بقیه حله.همون طور که دوست عزیزمون گفتند اگه سایت مقابل کمی سورسش رو تغییر بده اطلاعات در سایت شما نشون داده نمی شه ولی کمتر چنین چیزی اتفاق می افته.
بهترین روش هم preg_match هست.

mohammad-gh
پنج شنبه 02 اردیبهشت 1389, 17:35 عصر
از جوابها ممنون ولي اگر ممكنه يه كم بيشتر توضيح بديد
چون منن اصلا با چنين روشي كار نكردم
منظورم همون گرفتن خروجي از اطلاعات يك سايت هست رو

امیـرحسین
پنج شنبه 02 اردیبهشت 1389, 18:37 عصر
خروجی صفحه یک ساختار HTML داره دیگه. مثلا عنوان در تگ title قرار داره. مطلب در تگ body در فلان div در فلان div و غیره و غیره و غیره.
شما توسط توابعی مثل توابع cURL می تونید خروجی HTML صفحه رو بگیرید و براساس همون اطلاعات که عنوان کجای کدهاست، مطلب کجای کدهاست و غیره. این کدها رو پردازش می کنیم...
کاملا شبیه RSS ولی RSS فرمت استاندارد داره ولی این مدل چون فرمت استانداردی نداره، تحلیلش مشکله.

mohammad-gh
جمعه 03 اردیبهشت 1389, 20:36 عصر
سلام دوست عزيز ،‌ممنون از پاسخت ، ولي مطلب آنقدر گنگه كه نفهميدم
اينطوري بررسي كنيم
اين ‌صفحه اي است كه مي خوام ازش اطلاعات بگيرم
http://www.btaraf.com/LiveScore.aspx
حالا بفرماييد با اينها چطور كار كنم
اميدوارم اهميت موضوع را درك كنيد!
باز هم ممنون

yasgig
جمعه 03 اردیبهشت 1389, 21:41 عصر
<?php
$url = "http://www.btaraf.com/LiveScore.aspx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
ob_start();
$html=curl_exec($ch);
ob_end_clean();
curl_close ($ch);
if( preg_match( "/<td class='leaguelabel rowheader noborder'>(.*?)<\/table><\/div><\/div>/si" , $html , $Match ) )
{
$new = str_replace('/Images', 'http://www.btaraf.com/Images', $Match[1]);
}
echo $new;
?>
امیدوارم به دردتون بخره.ظاهرش یکم بده ولی اگه توی سایتتون قرار بدین درست میشه.
موفق باشید!

mohammad-gh
شنبه 04 اردیبهشت 1389, 20:05 عصر
ممنون از دوست عزيزمون
خيلي دستور جالبي است
اما دو مورد بود
يكي اينكه از پارامتراش زياد سر در نياوردم
دومي اينكه اين رفرش صفحه رو كه باعث تغيير نتيجه ميشه نداره ، چه كدي بهش اضافه كنم كه صفحه هر يك دقيقه يكبار رفرش بشه

arminz
جمعه 10 اردیبهشت 1389, 15:26 عصر
اگه می شه این رفرش کردن رو هم بگو لطفا , بعد اگه می شه بگو اگه بخوام سایت رو عوض کنم باید چکار کنم , مثلا من سایت زیر رو test کردم ام نشد :

http://free.scorespro.com/soccer.php
ممنون می شم کامل توضیح یا آموزش بدی , با تشکر , راستی می شه مثلا نوشته هاش رو عوض کرد , مثلا همین لینک بالایی من انگلیسی اسم تیم هاش , می شه فارسیش کرد؟

yasgig
جمعه 10 اردیبهشت 1389, 16:55 عصر
مثلا من سایت زیر رو test کردم ام نشد :
از کد زیر استفاده کن:

<?php
$html = file_get_contents("http://free.scorespro.com/live_free.php");
if( preg_match( '/<table class="size" border="0" id="window_size"><tr><td align="center" colspan="3">(.*?)<table cellpadding="0" cellspacing="0" class="size" border="0">/si' , $html , $Match ) )
{
$content = $Match[0];
}
echo $content;
?>

راستی می شه مثلا نوشته هاش رو عوض کرد , مثلا همین لینک بالایی من انگلیسی اسم تیم هاش , می شه فارسیش کرد؟
آره با تابع زیر میشه:

$new = str_replace('kalamee ke bayad peyda shavad', 'kalamee ke bayad ba gabli jaygozin shavad', $html);
که در آن $html جایی هستش که باید در آنجا جستجو بشه.
با رفرش اتوماتیک هم می تونستم واستون درستش کنم ولی این خودش بهتره.
عکسهای هر کشور رو هم ذخیره کن و توی بخش مورد نظر بریز تا پرچم کشورها هم نشون داده بشه.
اینم نمونه:
http://yasgig.ir/football.php
موفق باشید!

arminz
جمعه 10 اردیبهشت 1389, 23:54 عصر
دستت درد نکنه ولی راستش من نتونستم ازش استفاده کنم:ناراحت: دمو ایم که لطف کردی قرار دادی کار نمی کنه متاسفانه :(
راستی این auto refresh رو هم یاد می دی اگه زحمتی نیست؟:ناراحت:

yasgig
شنبه 11 اردیبهشت 1389, 14:57 عصر
دمو:http://www.yasgig.ir/soccer
لینک دانلود اسکریپت:http://www.yasgig.ir/soccer.zip

arminz
شنبه 11 اردیبهشت 1389, 19:24 عصر
دستت درد نکنه , نمی دونم چجوری تشکر کنم , دیدم دکمه ی تشکر کمه, بازم ممنون

mohammad-gh
پنج شنبه 07 مرداد 1389, 20:34 عصر
آقا راه بهتری برای ترجمه یا استفاده از نتایج زنده یک سایت در سایت خود وجود دارد

آره با تابع زیر میشه:

کد PHP:

$new = str_replace('kalamee ke bayad peyda shavad', 'kalamee ke bayad ba gabli jaygozin shavad', $html);


که در آن $html جایی هستش که باید در آنجا جستجو بشه.

ما که نمی تونیم اسم همه تیمها رو ترجمه کنیم

آیا راه بهتری برای استفاده است؟
یا اسکریپتی که این کار کنه؟

mohammad-gh
دوشنبه 01 شهریور 1389, 14:22 عصر
مشکل رو یه بار دیگر از اول می گم
من اطلاعات نتایج زنده رو از لینک http://www.btaraf1.com/LiveScore.aspx با کد زیر گرفتم


$url = "http://www.btaraf1.com/LiveScore.aspx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
ob_start();
$html=curl_exec($ch);
ob_end_clean();
curl_close ($ch);
preg_match( "/<td class='leaguelabel rowheader noborder'>(.*?)<\/table><\/div><\/div>/" , $html , $Match );
$new = str_replace('/Images/', 'http://www.btaraf1.com/Images/', $Match[1]);

echo $new;

و نتیجه شد این http://www.afc90.com/live.php
حالا می خوام دور هر لیگ یه کادر یا چیزی که اون رو مشخص کنه بکشم؟
اصلا با این روش گرفتن اطلاعات میشه همچین کاری کرد
تابعی دیدم به نام preg_split با اون میشه کاری کرد یا با انداختن توی یک حلقه
متاسفانه کارم بد گیره ؟
هر چی هم این الگوها رو می خونم می بینم کار یکی ، دو روز نیست