PDA

View Full Version : نحوه استخراج اطلاعات از وب (صفحات وب)



hamedg1366
سه شنبه 05 خرداد 1394, 08:19 صبح
با سلام و عرض ادب

(ابتدا معذرت خواهی میکنم از همه دوستان اگه سوال مبتدیانه هس )


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


با تشکر از همه

j_naroogha@yahoo.com
سه شنبه 05 خرداد 1394, 08:40 صبح
شما باید محتویات یه صفحه رو بخونین و بعد اطلاعاتی رو که میخاین بردارین
با این تابع
http://php.net/manual/en/function.file-get-contents.php
البته کتابخونه های زیادی هم واسه این کار وجود داره...

hamedg1366
سه شنبه 05 خرداد 1394, 09:09 صبح
دوستان از اونجائی که من کاملا مبتدی هستم در این زمینه در صورت امکان لطفا لینک های آموزشی فارسی بهم بدین یا کلمات کلیدی بگین توی گوگل سرچ کنم


مرسی

H:Shojaei
سه شنبه 05 خرداد 1394, 11:26 صبح
منبع فارسی به زور میتونید در این زمینه پیدا کنید بهتره همون منابع انگلیسی رو هرطور هست بخونید
fetch a web page php (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#safe=active&q=fetch+a+web+page+php)

m.esmaeilzadeh
سه شنبه 05 خرداد 1394, 11:58 صبح
طبق تجربه خودم برای جستجوگرهای خبری به نظرم از کلاس DOM استفاده کنی بهتره !!!

tazeha
سه شنبه 05 خرداد 1394, 18:34 عصر
شما می تونید هم از کلاس های عالی که نوشته شده استفاده کنید. مثل اینها

http://phptrends.com/?q=curl

و هم می تونید خودون با curl و xpath یا regex این کار رو انجام بدید.

تو گوگل هم می تونید کلمات زیر رو جست و جو کنید.

php curl

php scraper

php xpath curl

php curl get web deatil tutorial

php curl tutorial scraper

سایت های آموزشی:

http://code.tutsplus.com/tutorials/html-parsing-and-screen-scraping-with-the-simple-html-dom-library--net-11856

http://www.jacobward.co.uk/web-scraping-with-php-curl-part-1/

http://stackoverflow.com/search?q=curl+php

hamedg1366
چهارشنبه 06 خرداد 1394, 09:32 صبح
دوستان ببینین من درست متوجه شدم

باید با curl کل صفحه رو توی هاست خحودم دانلود کنم بعد با کمک xpath درون اون حرکت کرده و مقدار مورد نظر را بیرون بکشم؟


کسی از دوستان امکان داره کتابخونه ای و نحوه استفاده از اون رو بگه


(من اندروید کارم بخاطر همین آشنائی کاملی ندارم لطفا کمک کنید)

hamedg1366
چهارشنبه 06 خرداد 1394, 14:41 عصر
دوستان طرح کلی این کار به چه صورته ؟؟

همه دستورات رو باید توی یه صفحه بنویسم؟ دستورات کپی کردن صفحه و بعد دستورات xpath و استخراج همه باید توی یه صفحه باشه یا اینکه صفحات باید مجزا باشه؟


عزیزان کارم گیره در صورت امکان کمک کنید ؛ امیدوارم بتونم بعدا جبران کنم براتون


با تشکر از همه

H:Shojaei
چهارشنبه 06 خرداد 1394, 15:26 عصر
شما کل صفحه رو بگیر با هرچیزی که امکانش هست curl توابع file_get_content یا هر تابع دیگه بعد داخل یک متغیر بریزش...
حالا شما یک تکست دارید که محتوای یک سایته و با regex مقادیری رو که میخوای ازش دربیار...

hamedg1366
چهارشنبه 06 خرداد 1394, 18:14 عصر
میشه در صورت امکان یه مثال بذارید ( هر چند کوتاه ) برای درک بهتر مطلب


از همه دوستانی که دارن کمک میکنن سپاسگذارم

H:Shojaei
چهارشنبه 06 خرداد 1394, 18:50 عصر
میشه در صورت امکان یه مثال بذارید ( هر چند کوتاه ) برای درک بهتر مطلب


از همه دوستانی که دارن کمک میکنن سپاسگذارم
به این صورت باید عمل کنید:



//nemone regex vase peyda kardane tarikh ya har chizy ke aval neveshte bad adad bashe
$regex = "/[a-zA-Z]+ (\d+)/";
//reshteei ke masalan mitone ye source site bashe
$input_string = "June 24, August 13, and December 30, stuff 999";
if (preg_match_all($regex, $input_string, $matches_out))
{
print_r($matches_out);
}

tazeha
پنج شنبه 07 خرداد 1394, 10:05 صبح
curl حکم یک خزنده رو داره که به سایت مورد نظر میره. بعد به وسیله xpath یا regex آدرس قسمت مورد نظر از صفحه رو برای استخراج به curl داده می شه و اون هم اطلاعات رو استخراج می کنه.

مثال عملی:

http://ahoj.io/parsing-html-pages-using-xpath

http://www.earthinfo.org/xpaths-with-php-by-example/

j_naroogha@yahoo.com
پنج شنبه 07 خرداد 1394, 12:43 عصر
اگه نیز به جستجو به درخت Dom دارین بهتره یه نگاه هم به کتابخونه SimplehtmlDom
http://simplehtmldom.sourceforge.net/
بندازید.

hamedg1366
پنج شنبه 07 خرداد 1394, 22:37 عصر
دوستان دست تک تک تون رو می بوسم که دارین کمک میکنید بهم.


با کمک شکا عزیزان تا این قسمت پیش رفتم :


<?php

ini_set('default_charset',"UTF-8");

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,'http://www.barnamenevis.org/external.php?type=RSS2&forumids=30');


$file_path = "dwn_page_web/";//baraye ejad masir dwn

if(!is_dir($file_path)){
mkdir($file_path);
}

$fp = fopen($file_path."/".'barnamenevisRSS.xml', 'w');//ejad file barnamenevisRSS.xml dar masir morede nazar

curl_setopt($ch, CURLOPT_FILE, $fp);

curl_exec ($ch);

curl_close ($ch);
fclose($fp);


$contents = file_get_contents($file_path."/".'barnamenevisRSS.xml');//khandan va rikhtan darone motegayyer

print $contents;

print "/n";

?>




یه پوشه توی هاست ایجاد میکنم و اطلاعات رو توش با کمک Curl کپی میکنم، سپس اونارو برای پردازش توی یه متغییر بنام contents قرار میدم.

حالا یه آموزش برای xpath پیدا کردم با این لینک (http://w3web.persianblog.ir/post/164) ، اونجا توی گام دوم میگه یه فایل html باید ایجاد کرد و ... الان من موندم چیکار کنم ! یعنی یه نابع باید ایجاد کنم و دستوراتم رو اونجا بنویسم یا اصلا نیازی به این کارا نیس ؟

کل اطلاعات صفحه رو توی متغییر دارم الان چیکار باید بکنم تا مثلا به تگ مربوطه برسم

؟

hamedg1366
پنج شنبه 07 خرداد 1394, 22:39 عصر
یادم رفت بگم من اون دستورات html رو کجا باید بنویسم ؟ در ادامه دستوراتم یا توی صفحه دیگه ؛ اگه توی صفحه دیگه باید این کار رو انجام بمد چطور اون رو فراخوانی کنم و اطلاعات رو بهش پاس بدم



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

hamedg1366
جمعه 08 خرداد 1394, 13:20 عصر
با عرض پوزش .... Up
:افسرده:

rasoul_par
جمعه 08 خرداد 1394, 20:26 عصر
سلام
والا نمیدونم این آموزش چیکار کرده یا میخواد بکنه چون نخوندم فکر هم نمیکنم کسی بخونه البته با عرض معذرت!
ولی نکته اینه که تو الان یک متغییر رشته ای داری به اسم $contents که میتونی با روشهای مختلفی به اون تگ مورد نظرت دست پیدا کنی!
مثلا میتونی از Regexp استفاده کنی یا اصن از توابع رشته ای مثل strstr استفاده کنی!
این (http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php)لینک شاید به دردت بخوره!

tazeha
شنبه 09 خرداد 1394, 10:45 صبح
دوستان دست تک تک تون رو می بوسم که دارین کمک میکنید بهم.


با کمک شکا عزیزان تا این قسمت پیش رفتم :

یه پوشه توی هاست ایجاد میکنم و اطلاعات رو توش با کمک Curl کپی میکنم، سپس اونارو برای پردازش توی یه متغییر بنام contents قرار میدم.

حالا یه آموزش برای xpath پیدا کردم با این لینک (http://w3web.persianblog.ir/post/164) ، اونجا توی گام دوم میگه یه فایل html باید ایجاد کرد و ... الان من موندم چیکار کنم ! یعنی یه نابع باید ایجاد کنم و دستوراتم رو اونجا بنویسم یا اصلا نیازی به این کارا نیس ؟

کل اطلاعات صفحه رو توی متغییر دارم الان چیکار باید بکنم تا مثلا به تگ مربوطه برسم

؟

شما می خواین اطلاعات استخراجی از یک صفحه رو تو دیتابیس ذخیره کنید یا تو فایل های دیگه.
بعد تو این کد فقط اومده کل صفحه رو با همه جزئیات تو فایل شما ذخیره کرده ، بدون اینکه مشخص کرده باشید چه قسمتی رو اجرا کنه.
الان دقق ممعلوم نیست.
1- شما می خواید rss استخراج کنید یا صفحه html ؟

2- می خواید تو دیتابیس ذخیره کنید یا نه؟
:افسرده:

amini08
جمعه 08 مرداد 1400, 17:07 عصر
پوزش میطلبم که تاپیک قدیمی میارم بالا ولی بازهم اگه کسی هست میتونه کمک کنه ممنون میشم:قلب:


شما می خواین اطلاعات استخراجی از یک صفحه رو تو دیتابیس ذخیره کنید یا تو فایل های دیگه.
بعد تو این کد فقط اومده کل صفحه رو با همه جزئیات تو فایل شما ذخیره کرده ، بدون اینکه مشخص کرده باشید چه قسمتی رو اجرا کنه.
الان دقق ممعلوم نیست.
1- شما می خواید rss استخراج کنید یا صفحه html ؟

2- می خواید تو دیتابیس ذخیره کنید یا نه؟
:افسرده:

اگه امکانش هست یک مـثال برای ذخیره داخل دیتابیس بیارید
ما میایم دسترسی به دیتابیس رو به فایل میدیم,بعدش چجوری بتونیم یه قسمت خاص از یک صفحه رو استخراج کنیم و بریزیم داخل دیتابیس!؟
مثلا قیمت دلار یا سکه ک داخل یک صفحه هست رو فقط قیمتشو استخراج کنیم و داخل دیتابیس وارد کنیم

plague
شنبه 09 مرداد 1400, 15:36 عصر
با استفادخه از توابع DOMDocument یا کتابخونه هایی مثل phpQuery میتونی بین کد های html حرکت کنی و داده های مد نظرت رو در بیاری
بعد داده هایی که مد نظرته رو خارج کردی از کد های html میریزی توی دیتبایس