PDA

View Full Version : حرفه ای: درآوردن مطالب از درون یک سایت (نارنجی)



dreadful
سه شنبه 05 آذر 1392, 23:11 عصر
سلام دوستان

من میخوام یه اپ واسه نارنجی بنویسم ،میخوام از توی سایت نارنجی (http://narenji.ir/) مطالبی که گذاشته میشه رو بیرون بکشه و به صورت پست توی اپ بگذاره ،اما چطوری ؟

نمیتونم از rss سایت استفاده کنم چون میخوام مطلبش به صورت کامل گذاشته بشه ولی توی rss های سایت نارنجی فقط خلاصه اخبار هست و ادامه ی مطلب رو نداره ،همچنین rss هاش یکم دیر آپدیت میشن و نارنجی هم هیچ امکانی رو واسه من نذاشته و مجبورم از خود سایت بگیرم !

حالا سوالم اینه که این امکان داره ؟ چطوری میتونم این کار رو انجام بدم ؟

ممنون دوستان :)

2undercover
پنج شنبه 07 آذر 1392, 13:12 عصر
این یک نمونه که توانایی اینو داره که عکس, متن و برچسب های پست های صفحه ی اول سایت نارنجی رو بر گردونه:



header('Content-Type: text/plain');
$content = file_get_contents('http://narenji.ir');
$lines = preg_split("/\n/", $content, null, PREG_SPLIT_NO_EMPTY);
$links = array();
foreach($lines as $line) {
if(strpos($line, '<div class="views-field views-field-view-node">') !== false) {
preg_match("/\<a href=\"(.+)\">/", $line, $match);
preg_match("/^\/([0-9]+)\-/", $match[1], $id);
$links[$id[1]] = 'http://narenji.ir' . rawurldecode($match[1]);
}
}
$posts = array();
foreach($links as $id => $link) {
$lines = explode("\n", file_get_contents($link));
$reach = false;
foreach($lines as $line) {
if(preg_match("/^\<div id=\=node-" . $id . " .+$/", $line) !== false) {
$reach = true;
}
if($reach) {
if(!isset($posts[$id]['pic']) && strpos($line, '<div class=narenjipic>') !== false) {
$pic = true;
continue;
}
if(!isset($posts[$id]['content']) && strpos($line, '<div class="content clear-block">') !== false) {
$con = true;
$posts[$id]['content'] = '';
continue;
}
if(!isset($posts[$id]['tags']) && strpos($line, '<div class=terms>') !== false) {
$tags = explode('</a>', $line);
foreach($tags as $tag) {
if(preg_match("/\<a .+\>(.+)/", $tag, $tag) !== false && !empty($tag)) {
$posts[$id]['tags'][] = $tag[1];
}
}
}
if(isset($pic)) {
preg_match("/\<img src='(.+?)'.+\/\>/", $line, $pic);
$posts[$id]['pic'] = $pic[1];
preg_match_all("/\<a .+\>(.+?)\<\/a\>/", $line, $cats);
$posts[$id]['cat'] = array();
foreach($cats[1] as $cat) {
$posts[$id]['cat'][] = $cat;
}
unset($pic);
}
if(isset($con)) {
if(strpos($line, "<br class=clear />") !== false) unset($con);
$posts[$id]['content'] .= $line;
}
}
}
}
print_r($posts);