PDA

View Full Version : گفتگو: راهنمايي و درخواست راه حل در مورد گرفتن اطلاعات و ريختن در برنامه شخصي



sajjad_india
سه شنبه 01 آذر 1390, 12:03 عصر
سلام
برنامه ميخواستم بنويسيم كه از اين سايت http://www.gooshishop.com تمامي اطلاعات و مدل و قيمت رو بگيره و تو بانك ذخيره كنه و هروقت كه خواستم بهم نشون بده . يعني يه جورايي تحت دسكتاپ باشه بدون نياز به اينترنت
مثلا در برنامه دستكتاپ فقط نام گوشي مدل گوشي و قيمت رو ذخيره كنه ) حالا اگر هم بشه با عكس . منظورم اينه خودش اين كاره كنه بصورت دستي تك تك نباشه .
همچين چيزي هست يا نه ؟

اين فيلدها را ذخيره كنه :
نام گوشي samsung nokia sony و ...
مدل 1280 , c7 و ...
قيمت 12500 يا .....

به نظر شما دوستان راه حل در اين خصوص چيه ؟ چطور ميشه اين رو پياده سازي كرد ؟

تو عكس بيشتر متوجه ميشد
78238
ممنون ميشم راهنمايي لازم و نظرات و راه حل رو براي اين منظور مبذول بفرماين .
تشكر از همه

مرتضی تقدمی
سه شنبه 01 آذر 1390, 12:56 عصر
سلام
نرم افزارهایی برای دانلود کامل سایت های اینترنتی وجود دارند که می تونی همین سایت رو به طور کامل دانلود کنی و هر وقت و هر کجا که به مطالبش احتیاج داشتی ازش استفاده کنی.
فکر نمی کنم استخراج این اطلاعاتی که شما گفتی از داخل یک سایت و به طور خودکار کار راحتی باشه.
موفق باشید

sajjad_india
سه شنبه 01 آذر 1390, 13:14 عصر
درسته اون نرم افزارها تمامي اطلاعاتي رو كه فكر كنم بشه برداشت رو برميداره ولي فكر نكنم بانك سايت رو برداره !‌
بهر حال نظرات دوستان و راه حل دوستان در اين مورد ميشه كمكي بكنه واسه همچين برنامه اي و اينكه تمايل دارم اين برنامه رو بنويسم يا با كمك هم بنويسيم . راهنمايي و نظرات و همچنين حتي يك راه حل ميتونه در اين برنامه كمك بسيار بزرگي بكنه .

sajjad_india
سه شنبه 01 آذر 1390, 15:14 عصر
كسي نيست ؟!

joker_pok
سه شنبه 01 آذر 1390, 15:15 عصر
بیخیال فکر نکنم همچین چیزی رو بتونی به راحتی پیاده سازی کنی

مگه اینکه اطلاعات سایت رو یه جوری بریزی تو یک فایل و برنامه اطلاعات رو از توی فایل بخونه خوندن فایل راحته اما چه جوری اطلاعات رو بتونی بریزی تو یه فایل txt میشه برنامه نویسی هوشمند و با الگوریتم های هوش مصنوعی که تا حالا من همچین چیزی ندیدم یا اینکه بتونی کد نویسی در سطح هک بلد باشی فکر کنم بری توی Ashiyane.org زود تر به جواب برسی باید بتونی از هک کردن استفاده کنی راه دیگه ای محاله داشته باشه

sajjad_india
سه شنبه 01 آذر 1390, 15:27 عصر
يادش بخير آشيانه ..... (http://zone-h.org/archive/notifier=Seyyed%20sajjad)

ولي خواستم عين آدم اين كارو كنم ديگه نياز به آشيانه نيست كه . ميخوام بدونم اصولش چيه ؟ مراحل يه همچين كاري چيه ؟
ممنون از شما راهنماييتون عالي بود يك چيز به انديشه اينجانب اضافه شد . حالا اجازه بديم اساتيد و دوستان عزيز هم بيان كمي نظر و راه حل بدن تا به نتيجه نزديك تر شيم .

ممنون از شما باز هم دوسته گلم

_behnam_
سه شنبه 01 آذر 1390, 15:45 عصر
سلام!
کار سختی نیست
فقط یکم با ُتوابع Split, Mid , Instr آشنا باشید
میتونید لینکهای مارک هارو از وب وبروزر یکی یکی در بیارید و بهد وارد آنها بشیدو مدل گوشی هارو با توابع بالا بکشید بیرون و توی دیتابیس ذخیره کنید

sajjad_india
سه شنبه 01 آذر 1390, 15:52 عصر
مشكل اينه كه يك صفحه نيست خيليه صفحاتش!!!
الگوريتم و فلورچارتش به چه صورت ميشه ؟

aleas2
سه شنبه 01 آذر 1390, 16:27 عصر
دوست عزیز راه حل راحتی وجود نداره شما باید برنامه ای بنویسید که بطور مثال(یه بانک از قبل ساخته باشین شامل 3 ستون ستون اول نام گوشی و ستون دوم مدل و ستون سوم قیمت )
برای صفحه اول نوکیا این صفحه رو باز کنه(البته برنامه رو میتونی اتوماتیک بسازی که نیاز به وارد کردن لینک نباشه خودش توسط توابع Split, Mid , Instr لینک صفحه مورد نظر برای هر مدل از گوشی رو پیدا کنه)
http://www.gooshishop.com/ItemsList.aspx?BrandId=20
بعد ستون اول نوکیا ذخیره کنه ستون دوم و سوم هم توسط توابع Split, Mid , Instr پیدا کنه ذخیره کنه تنها راه بدست اوردن اطلاعات اینه یعنی بار اول برنامه این مراحل رو انجام بده و اگر این صفحه وب شامل صفحات 2و3 و... هسته برنامه توسط توابع Split, Mid , Instr تشخیص بده صفحه بعد باز کنه همین مراحل دوباره رو اون صفحه انجام بده برای دفعات بد دگه اطلاعات از تو بانک بخونه

_behnam_
سه شنبه 01 آذر 1390, 16:30 عصر
0.شروع
1. سایت رو باز کن
2. لیننهای که مربوط به صفحات مدل های گوشی سایت رو جدا کن
3.به لینک شماره X برو
4.توی لینک مدل و قیمت گوشیهای موجود رو از سورس سایت بدست بیار
5. X رو با 1 جمع کن
6. اگر X از تعداد لینکها بیشتر بود به مرحله بعد برو در غیر این صورت برو به مرحله 3
7.پایان

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



موفق باشید

just4froum
سه شنبه 01 آذر 1390, 16:43 عصر
كار ساده اي است ولي يكم ريسكش بالاست يعني اگه شما اين كارو بكني بعد از 3 ماه صاحب سايت قالب سايتشو تغيير بده يا توي html تغييراتي بده احتمالا برنامه ي شما بدرستي كار نخواهد كرد و تمامي تلاش شما بيهوده خواهد بود.

sajjad_india
سه شنبه 01 آذر 1390, 17:53 عصر
دقيقا !!!
ماهم برنامه خودمون رو كمي تعقير ميديم و هماهنگ با سايت مورد نظر ميكنيم . (ميشه قابليت آپديت برنامه) البته واسه خودم ميخوام
ميشه واسه شروع يه سورس كوچيك .و استارت رو بزنيد و بريم سراغش ؟
من هميشه رو اين Instr اين چيزا مشكل داشتم

يا علي واسه شروع يكي كه اولويت ميشه كسي كه ميگه برنامه راحتي يه سورس كوچك بزاره .
تشكر از همه شما علاقه مندان و دوستان عزيز بخش وي بي 6

kitcat_m18
سه شنبه 01 آذر 1390, 18:43 عصر
به نظر من که شدنيه!
شما بايد براي استخراج نام گوشي ها از اين تگ استفاده کنين:

<a href="ItemsDetails.aspx?ItemId=2348" class='mst_ins'>نوکيا 101 دو سيم کارت</a>
مشخصه که class='mst_ins' رو بايد به عنوان کلمه کليدي جستجو کنين.
تا اينجا نام گوشي ها و مدل گوشي پيدا ميشه. البته نام گوشي رو بايد از تو رشته بکشي بيرون(با استفاده از InStr)
عاقلانه ترين راه اينه که به جاي جدا کردن نام گوشي موقع سلکت زدن تو بانک نام گوشي رو تو رشته سلکت بزني هر جا که نتيجه مورد نظر شما رو داشت نشون بده.

حالا شما سه تا پارامتر رو با هم مي خواي يعني نام، مدل و قيمت.
مي تونم بگم بعد از تگ بالا اين تگ رو براي قيمت پيدا کن

<a href='ItemsGuarantees.aspx?ItemId=2348&GuaranteeId=1158' class='mst_igl'><span >اصلي نوکيا&nbsp;530,000 ریال</span>
اما اگه يکي از اين تگها اين وسط پيدا نشه اونوقت چي؟؟؟ همه چي به هم ميريزه!

بهترين راه اينه که به دنبال اين تگ بگردي:


<td style='width:33%' class='ItemStyle' align='right' onmouseover="hI(this)" onmouseout="oI(this)" ><a href="ItemsDetails.aspx?ItemId=2348" style="float: right"><img src='LoadPicture.aspx?PictureId=8063&typ=1' WIDTH='73px' HEIGHT='90px' Class='PS'></img></a><div class='mst_ins'><a href="ItemsDetails.aspx?ItemId=2348" class='mst_ins'>نوکيا 101 دو سيم کارت</a><br/><a href="Compare.aspx?ItemId=2348" class='LS'>[مقایسه]</a></div><a href='BuyBasket.aspx?GuaranteeId=1158' class='LS'><img src='images/AddToBasket.gif' class='NS' title='اضافه به سبد'></a>&nbsp;<a href='ItemsGuarantees.aspx?ItemId=2348&GuaranteeId=1158' class='mst_igl'><span >اصلي نوکيا&nbsp;530,000 ریال</span></a><br/></td>

اگه يه کمي HTML بلد باشي متوجه ميشي که اين سايت براي ليست کردن محصولات از Table استفاده کرده و هر محصول در يک تگ TD قرار داره

شما اول با استفاده از افعال با قاعده اين تگ ها رو پيدا مي کني بعد با کلاس هايي که گفتم و تابع INSTR چيزايي که احتياج داري رو به راحتي استخراج مي کني.

موفق باشي :لبخندساده:

sajjad_india
سه شنبه 01 آذر 1390, 19:00 عصر
واي ترس برم داشته ! !‌ !
هم اكنون نياز مند ياري سبزتان هستم ! بگذريم .

حالا من به نظر شما واسه اين كار آنلاين كار كنم بهتر نيست ؟ يعني از webbrowser ؟
مثلا ااگر بخوام فقط جدول گوشي ها رو webBrowser نشون بدم همچين امكاني داره ؟
يهني كل صفحه نباشه فقط ليست مثلا گوشي هاي نوكيا رو فقط تو webbrowser نشونم بده ؟!

تشكر ويژه از همه شما دوستان عزيز

sajjad_india
سه شنبه 01 آذر 1390, 19:15 عصر
منظورم اينه وقتي كمبو باكس مدل نوكيا يا سامسونگ رو باز ميكنم قسمت قرمز در عكس فقط تو WebBrowser1 نشون داده بشه !!! ميشه همچين چيزي ؟


78257

meys34
پنج شنبه 03 آذر 1390, 16:21 عصر
منظورم اينه وقتي كمبو باكس مدل نوكيا يا سامسونگ رو باز ميكنم قسمت قرمز در عكس فقط تو WebBrowser1 نشون داده بشه !!! ميشه همچين چيزي ؟


78257

کدش میشه این
Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.gooshishop.com/"
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
If WebBrowser1 <> pDisp Then Exit Sub

Dim htmlData As String, i As Long, j As Long
htmlData = WebBrowser1.Document.documentElement.OuterHTMl
i = InStr(1, htmlData, "<tr id=area2>", vbTextCompare)
If i = 0 Then MsgBox "error": Exit Sub
j = InStr(1, htmlData, "</SPAN></TD></TR></TBODY></TABLE></TD></TR>", vbTextCompare)
htmlData = Mid$(htmlData, i, j - i + 12)
WebBrowser1.Document.body.innerHTMl = htmlData
End Sub



آپدیت کد فراموش نشه ... مثلا اگر سایت اسم area2 رو بکنه area3 دیگه این کد کار نمیکنه

اول کار یه error میده که مهم نیست

http://myup.ir/images/48843192730942286154.jpg

sajjad_india
شنبه 12 آذر 1390, 12:54 عصر
كاشكي خط بخ خط برنامت رو توضيح ميدادي

meys34
شنبه 12 آذر 1390, 19:34 عصر
:چشمک:
توضیح کلی اینکه source کل سایت رو میگیریم (تو explorer ویندوز این قسمته View>source)


کدش میشه این

Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.gooshishop.com/"
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
If WebBrowser1 <> pDisp Then Exit Sub

Dim htmlData As String, i As Long, j As Long
htmlData = WebBrowser1.Document.documentElement.OuterHTMl

بعدش دنبال قسمت گوشی های موبایل میگردیم که درحال حاضر شامل یک جدول میشه. کد Html مربوط به این جدول با <tr> نشان داده میشه و اسم اون جدول area2 هست

i = InStr(1, htmlData, "<tr id=area2>", vbTextCompare)

این جدول یه جایی تموم میشه دیگه ... انتهای جدول رو هم می یابیم:قهقهه:

j = InStr(1, htmlData, "</SPAN></TD></TR></TBODY></TABLE></TD></TR>", vbTextCompare)

در آخر جدول مربوطه میشه این

htmlData = Mid$(htmlData, i, j - i + 12)

و source رو تغییر میدیم


WebBrowser1.Document.body.innerHTMl = htmlData

تمام شد.