PDA

View Full Version : سوال: وارد کردن جدول با curl



sara.saba90
جمعه 18 مهر 1393, 19:23 عصر
یک جدولی هست که دراین سایت (http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=33931218652865616) هست رو میخوام در یک فایل php با curl بیارم.عناوین فیلد های جدولی که میخوام توی یه پیج php نمایش میده اینه.(این جدول میخوام نمایش بده تو پیجم)

تعداد
حجم
خرید
فروش
حجم
تعداد


ممنون میشم بگید چجوری میشه با curl اینکار رو انجام داد؟:لبخندساده:

mahmod2000
جمعه 18 مهر 1393, 20:32 عصر
در مورد simple_html_dom تحقیق کنید
میتونید محتوا رو با curl بگیرید و با استفاده از simple_html_dom با اون تگهای دریافتی کار کنید

sara.saba90
جمعه 18 مهر 1393, 20:59 عصر
میشه یه خورده راهنمایی کنید؟:لبخندساده:کارم خیلی واجبه.ممنون:لبخندساده:

sara.saba90
جمعه 18 مهر 1393, 21:03 عصر
چون انگار نمیشه با curl معمولی دادها رو گرفت.درسته؟منکه نتونستم:لبخندساده:

شاهرخ عشایری
جمعه 18 مهر 1393, 23:45 عصر
با سلام....
شما اطلاعات صفحه دلخواه رو با کمک CURL دریافت کنید و قسمتهای مورد نظر رو به صفحه خودتون اضافه کنید.

لینک مربوطه اینه:
http://barnamenevis.org/showthread.php?143546-Curl-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F

sara.saba90
شنبه 19 مهر 1393, 00:16 صبح
خب مشکل من اینه که نتونستم با curl بازش کنم.ببینید شما میتونید لینکها رو بیارید تو page خودتون؟ممنون:لبخندساده:

sara.saba90
شنبه 19 مهر 1393, 00:32 صبح
الان این کد رو میزارم ولی متنو بهم ریخته میاره مشکل از چیه؟جدولو دیکد نکردن؟متن اینجوریه ���8T��Y�n���w��"K� ����?�V�-ˉZ;U-�Ijˆ��.چیکار کنم؟:ناراحت:یعنی کسی نیست راهنمایی کنه؟:افسرده:


<meta charset="UTF-8"/><?php $ch = curl_init(); // set URL and other appropriate optionscurl_setopt($ch, CURLOPT_URL, "http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=33931218652865616");curl_setopt($ch, CURLOPT_HEADER, 0); // grab URL and pass it to the browsercurl_exec($ch); // close cURL resource, and free up system resourcescurl_close($ch);?>

mahmod2000
شنبه 19 مهر 1393, 07:24 صبح
این وبسایت با ajax و javascript داره محتواش رو تولید میکنه
پس زمانی که شما پیچ رو باز میکنی، با html زیاد سرو کار نداری:لبخندساده:
سورس صفحه رو ببینید:
view-source:http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=33931218652865616

sara.saba90
شنبه 19 مهر 1393, 08:48 صبح
درسته,یعنی هیچ راهی نیست جدول رو تو پیج خودم نمایش بدم؟:ناراحت:

mahmod2000
شنبه 19 مهر 1393, 11:19 صبح
چون شما باید با تگ ها کار کنید برای این موضوع، چیزی به ذهنم نمیرسه
بازم ببینیم دوستان اگه نظری داشتن میگن

موفق باشید

bagherok
شنبه 19 مهر 1393, 12:57 عصر
شدنیه کافیه به این لینک برید و داده های که
بعد از دومین سمی کالن ;
هست رو استخراج کنید

http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=33931218652865616&c=23+

12:29:17,A ,2352,2308,2253,2262,2352,2253,561,3430222,7915296 148,0,20141011,122917;;35@975722@2352@2357@27254@2 ,2@59000@2350@2365@100@1,2@14130@2349@2375@150@1,; 20087,99961,96859;3330222,100000,0,3180222,250000, 163,1,0,186,2;33931218652865616@2352@2308@2262@561 @3430222@7915296148,49188729526980541@15006@15220@ 15311@203@183538@2762416424,35366681030756042@1061 1@8927@8927@0@0@0,22667016906590506@22010@22208@22 259@347@248597@5494090825,35178706978554988@22889@ 22757@22580@27@8477@192914207,44013656953678055@12 800@12790@12735@69@102732@1313952954,7745894403636 165@26999@9751@9751@0@0@0,14073782708315535@11806@ 12215@12296@45@35234@417126023,60247433951600827@1 9000@18392@18392@0@0@0,34066377223628725@780676@89 572@89572@0@0@0,33683240001985963@15399@12063@1206 3@0@0@0,48753732042176709@19590@15002@15002@0@0@0, 33509150675201804@10000@10000@10000@0@0@0,30007580 613586002@1000@1000@1000@0@0@0,15135845208809633@1 000@1000@1000@0@0@0,67757256780375279@1000@1000@10 00@0@0@0,

حالا یه مشکلی هست و اون اینه که
وقتی صفحه رو با مرورگر بازمیکنی درست نمایش میده
اما با curl داده ها رودرست نمایش نمیده

‹919Tÿm“]nQ…·’T.­ÿ’R]6€Ø‚—JÀK%ÖÏq2 š('3Ή¯ýÙÃr–>s®§%ê¡Z"®#6·¼Ô”Dde³K[-ZBlLÌ‹EšóÒúÜ'–³Ò™h}^É™|Ÿ´¿= :}ýþåååÃݏŸwOo™ï»ß=> þtzO÷$o–Š¤¹µŽÖ mò¶Å,¬-LÙË´#‘ž’ÒU"–Fªâ±¸šz}ZŒÿµI4-_õÝé)²§»‘Ü8Ñm£Õ퍓'8¾wŒ8šÔ YCqŸøEˆ*L%ŠB"“.ª7LˆâDÊu ˆ_°"ÌKàneÁµ>Áñ§,ª=3؈íƒüþ‡¼5W¥´£¯+ž’( €Uæ-¤›K]‘*CŒÃÄî#¢˜”ÒƒÍQÀ]-yš÷l@$1°¨8r#3¾¦6ñFa€gå{ÆE Ž8+):Ë®qWœäÀ/dÁY–¹¹±6&”ˌȣQ_¢%@ž=€f_“‹F±¸BÍŠEÇxR³ $©”Ýac ž$ ¶Í7°ªmãd ¸2Í+F î¾A²{–ƒorÃ/– crŽ™ó”<;°-‡Þœj¡‰ÕÒÌÆ7Úˆ@žzX5J[IÜ :Ãá,4×W½9­Ò cNœ˜<íÃÓ–CœÈ–@‹'Ä+®¿^ëü+G?9Û ¯ÛØ'9f]„õu›âIÁR¢M8AÝ®?ÒzsþÞ†l

حتی با winhttrack هم درست نمایش میده

حالا نمیدونم مشکل نمایش فونت هاست یا کد شده هست!

sara.saba90
شنبه 19 مهر 1393, 13:49 عصر
مشکل منم همینه با curl دادها رو درست نمایش نمیده و متن ها به هم ریخته نشون میدن.میشه واضحتر بگید چیکار کنم؟ممنون میشم:لبخندساده:

bagherok
شنبه 19 مهر 1393, 17:46 عصر
مشکل منم همینه با curl دادها رو درست نمایش نمیده و متن ها به هم ریخته نشون میدن.میشه واضحتر بگید چیکار کنم؟ممنون میشم:لبخندساده:
همین دیگه
مشکل همینه که درست نمایش نمیده
فعلا که به جوابی نرسیدم
اگه حل شد اطلاع میدم.

sara.saba90
شنبه 19 مهر 1393, 17:52 عصر
آقای mahmood2000 هم گفتن که خروجیش.جاوااسکریپت هست و curl خروجی html میده.نمیدونم چیکار کنم؟یعنی هیچ راه دیگه ای نداره؟

bagherok
شنبه 19 مهر 1393, 18:02 عصر
آقای mahmood2000 هم گفتن که خروجیش.جاوااسکریپت هست و curl خروجی html میده.نمیدونم چیکار کنم؟یعنی هیچ راه دیگه ای نداره؟
اصلا شما با این لینک کاری نداشته باشید

http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=33931218652865616
کافیه خروجی این صفحه رو داشته باشید

http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=33931218652865616&c=23+
که یه سری حروف و عدد هست بدون هیچ تگ html ای

گفتم اگه حل شد اطلاع میدم.

bagherok
شنبه 19 مهر 1393, 18:07 عصر
حل شد.....

function get_url_contents($url){
$crl = curl_init();
curl_setopt($crl,CURLOPT_ENCODING , "gzip");
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
echo $file=get_url_contents('http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=33931218652865616&c=23+');

MMSHFE
شنبه 19 مهر 1393, 18:11 عصر
در زمان کارکردن با CURL برای سایتهایی که محتوا رو خودشون با AJAX میگیرن باید با سربرگ Net فایرباگ و بخصوص بخش XHR اون زیاد سروکله بزنید. این نمونه رو ببینید که چند وقت پیش برای یکی از دوستان درست کردم (مال همین سایت بورسه).

bagherok
شنبه 19 مهر 1393, 18:13 عصر
در زمان کارکردن با CURL برای سایتهایی که محتوا رو خودشون با AJAX میگیرن باید با سربرگ Net فایرباگ و بخصوص بخش XHR اون زیاد سروکله بزنید. این نمونه رو ببینید که چند وقت پیش برای یکی از دوستان درست کردم (مال همین سایت بورسه).
همین کاررو کردم
ومتوجه شدم که Gzip شده

nazanin_asadi_1
شنبه 19 مهر 1393, 18:25 عصر
همون جوری که bagherok گفتن عمل کن


شما خروجی آدرس http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=33931218652865616&c=23+ رو بگیرین


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


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


$s='12:29:17,A ,2352,2308,2253,2262,2352,2253,561,3430222,7915296 148,1,20141011,122917;;35@975722@2352@2357@27254@2 ,2@59000@2350@2365@100@1,2@14130@2349@2375@150@1,; 20089,100833,116781;3330222,100000,0,3180222,25000 0,163,1,0,186,2;33931218652865616@2352@2308@2262@5 61@3430222@7915296148,49188729526980541@15006@1522 0@15311@203@183538@2762416424,35366681030756042@10 611@8927@8927@0@0@0,22667016906590506@22010@22208@ 22259@347@248597@5494090825,35178706978554988@2288 9@22757@22580@27@8477@192914207,44013656953678055@ 12800@12790@12735@69@102732@1313952954,14073782708 315535@11806@12215@12296@45@35234@417126023,774589 4403636165@26999@9751@9751@0@0@0,60247433951600827 @19000@18392@18392@0@0@0,34066377223628725@780676@ 89572@89572@0@0@0,33683240001985963@15399@12063@12 063@0@0@0,48753732042176709@19590@15002@15002@0@0@ 0,30007580613586002@1000@1000@1000@0@0@0,677572567 80375279@1000@1000@1000@0@0@0,15135845208809633@10 00@1000@1000@0@0@0,33509150675201804@10000@10000@1 0000@0@0@0,';
$s=explode(';',$s);
echo $s[2];

حالا باز با استفاده از دستور explode رشته بدست اومده رو تفکیک کن

$a=explode(',',$s[2]);


نمونه کامل کد جهت استخراج و ادامه کار

$s='12:29:17,A ,2352,2308,2253,2262,2352,2253,561,3430222,7915296 148,1,20141011,122917;;35@975722@2352@2357@27254@2 ,2@59000@2350@2365@100@1,2@14130@2349@2375@150@1,; 20089,100833,116781;3330222,100000,0,3180222,25000 0,163,1,0,186,2;33931218652865616@2352@2308@2262@5 61@3430222@7915296148,49188729526980541@15006@1522 0@15311@203@183538@2762416424,35366681030756042@10 611@8927@8927@0@0@0,22667016906590506@22010@22208@ 22259@347@248597@5494090825,35178706978554988@2288 9@22757@22580@27@8477@192914207,44013656953678055@ 12800@12790@12735@69@102732@1313952954,14073782708 315535@11806@12215@12296@45@35234@417126023,774589 4403636165@26999@9751@9751@0@0@0,60247433951600827 @19000@18392@18392@0@0@0,34066377223628725@780676@ 89572@89572@0@0@0,33683240001985963@15399@12063@12 063@0@0@0,48753732042176709@19590@15002@15002@0@0@ 0,30007580613586002@1000@1000@1000@0@0@0,677572567 80375279@1000@1000@1000@0@0@0,15135845208809633@10 00@1000@1000@0@0@0,33509150675201804@10000@10000@1 0000@0@0@0,';
$s=explode(';',$s);
echo $s[2];
$a=explode(',',$s[2]);
print_r($a)

خروجی مربوط به دستور فوق

35@975722@2352@2357@27254@2,2@59000@2350@2365@100@ 1,2@14130@2349@2375@150@1,

Array
(
[0] => 35@975722@2352@2357@27254@2
[1] => 2@59000@2350@2365@100@1
[2] => 2@14130@2349@2375@150@1
[3] =>
)


الان سطرها رو هم جدا جدا داری میمونه ستونها که اونها رو هم اگه باز به آرایه تبدیل کنی به خواستت می رسی

بعد از مرحله اول اگه با دستورات جایگزین کردن رشته کار کنی به جای این که هی به آرایه تبدیل کنی مقدار رو بخونی راحت میتونی با جایگزین کردن تک های tr , td سطرها رو بسازی و جدول رو هم کامل داشته باشی

sara.saba90
شنبه 19 مهر 1393, 23:35 عصر
در زمان کارکردن با CURL برای سایتهایی که محتوا رو خودشون با AJAX میگیرن باید با سربرگ Net فایرباگ و بخصوص بخش XHR اون زیاد سروکله بزنید. این نمونه رو ببینید که چند وقت پیش برای یکی از دوستان درست کردم (مال همین سایت بورسه).
ممنون به خاطر پاسختون.شما از چه روشی استفاده کردید؟

MMSHFE
یک شنبه 20 مهر 1393, 09:48 صبح
من هم با همین روش کار کردم. به کدی که گذاشتم دقت کنید. میبینید که فایل ajax.php داره با CURL و با هدر gzip,deflate برای کدگذاری، محتوا رو میخونه. بقیه کار، محاسباتی هست که برای تولید محتوا از روی داده های دریافتی لازم بوده.