PDA

View Full Version : حرفه ای: گرفتن اخبار ورزشی با استفاده از cURL



trade_mark
جمعه 14 آبان 1389, 15:41 عصر
سلام به مهندسان برنامه نویس
من چجوری میتونم با Curl، اخبار ورزشی رو از سایت هایی مثل ایسنا بگیرم و در سایتم نشون بدم
یه کم کد نوشتم ولی چیزی در مورد جدا سازی نمی دونم



$url="http://www.isna.ir/ISNA/FullNews.aspx?SrvID=football&Lang=P";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_REFERER,$url);
curl_setopt($ch, CURLOPT_URL, $url);

$html=curl_exec($ch);اگه دستور جداسازی عنوان های خبر رو بنویسید خیلی خیلی ممنون میشم
پ.ن:من این اخبار رو با ذکر منبع در سایتم درج میکنم

binyaft
جمعه 14 آبان 1389, 15:44 عصر
انچنان نیازی به curl نیست
میشه با تابع file_get_contents محتوای فایل RSS رو گرفت و به صورت زیر
مثلا برای لینک هر خبر

preg_match_all('/<link>(.*?)<\/link>/i',file_get_contents('http://news.com/rss.xml'),$match);
print_r($match);

موفق باشید

trade_mark
جمعه 14 آبان 1389, 15:49 عصر
binyaft عزیز مشکل من تو همین جدا سازیه
یعنی خوب بلد نیست با regular expertion کار کنم
اگه امکان داره با توجه به مثال من جداسازی رو انجام بدید

funpatogh
جمعه 14 آبان 1389, 16:23 عصر
<?php
$url="http://www.isna.ir/ISNA/FullNews.aspx?SrvID=football&Lang=P";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html=curl_exec($ch);
if($i=preg_match_all('/<table id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">(.*?)<table border="0" cellpadding="0" cellspacing="0" width="100%" id="Table6">
/si',$html,$match)){

for($j=0;$j<$i;$j++){

echo $match[0][$j]."<br>";

}

}

?>

trade_mark
جمعه 14 آبان 1389, 16:48 عصر
از جناب funpatogh بی نهایت سپاس گزارم چون در پست ایشون چند نکته مهم بود که خیلی به من کمک کرد
این هم کدی که من می خواستم

$url="http://www.isna.ir/ISNA/FullNews.aspx?SrvID=football&Lang=P";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_REFERER,$url);
curl_setopt($ch, CURLOPT_URL, $url);
$html=curl_exec($ch);
if($i=preg_match_all('/<b><img border="0" src="Images\/ISNA-Fe2\.jpg">(.*?)<\/b>/si',$html,$match)){

for($j=0;$j<$i;$j++){

echo $match[1][$j]."<br>";

}

}

trade_mark
جمعه 14 آبان 1389, 20:15 عصر
مشکل جدید
من می خوام از دو سایت مختلف مطلب بگیرم که صفحاتشون encoding مختلف داره
مثلا سایت اول windows-1256 و سایت دوم utf-8 هست
سایت خودم utf-8 هست و با نتایج سایت دوم مشکلی نداره
خوب به نظر شما از چه دستوری استفاده کنم تا موقع نمایش اطلاعات مشکلی پیش نیاد؟

funpatogh
شنبه 15 آبان 1389, 20:14 عصر
چارست جدول شما utf8_percian_ci هست؟
فکر کنم بعد از کانکت از این استفاده کنید حل میشه


mysql_set_charset("utf8");

trade_mark
شنبه 15 آبان 1389, 22:42 عصر
چارست جدول شما utf8_percian_ci هست؟
فکر کنم بعد از کانکت از این استفاده کنید حل میشه


mysql_set_charset("utf8");

مرسی مهندس
ولی منظور من این کد بود


iconv("windows-1256", "UTF-8",$text)
این کد encoding های مختلف رو به هم تبدیل میکنه

funpatogh
شنبه 15 آبان 1389, 22:47 عصر
تابع جالبی معرفی کردید ندیده بودم تاحالا
من خودم یک صفحه درست کردم با انکودینگ windows-1256 و اطلاعات رو گرفتم و با set_charset مطالبم رو که می فرستادم مشکلی نداشت

cybercoder
یک شنبه 16 آبان 1389, 12:18 عصر
میشه با تابع file_get_contents محتوای فایل RSS رو گرفت

زمانی که remote open file خاموش باشه کار نمی کنه.


این کد encoding های مختلف رو به هم تبدیل میکنه

و اگر با استفاده از تابع mb_detect_encoding قبلش استفاده کنید به سادگی براتون نوع encoding رو معمولا پیدا می کنه.

موفق باشید