PDA

View Full Version : گرفتن چندین صفت صفحه ی html



alijuventusi
چهارشنبه 22 مرداد 1393, 00:45 صبح
<div class="nav-band">
<div class="nav-items">
<div class="nav-pages">
<span>Pages:</span>
<strong>1</strong> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p2.php">2</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p3.php">3</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p4.php">4</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p5.php">5</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p6.php">6</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p7.php">7</a> <a href="http://www.gsmarena.com/nokia-phones-f-1-0-p2.php" title="Next page">»</a> </div>
<br class="clear">
</div>
</div>

</div>
من از این کد این اطلاعات رو میخوام چه جوری میشه کد زد ؟
شماره هر صفحه + لینک مربوطه مثلا صفحه 5 و لینک مربوطش
دسترسی به innertext رو دارم چه جوری href رو در بیارم ؟

alijuventusi
چهارشنبه 22 مرداد 1393, 00:58 صبح
البته میخوام این بخش کد به عنوان تگ انتخاب بشه
<div class="nav-pages">
این کلاس رو چگونه انتخاب کنم ؟

aminmousavi
چهارشنبه 22 مرداد 1393, 01:30 صبح
سلام دوست عزیز ، در خصوص پست اول تون از کد زیر استفاده کن :



HtmlElementCollection HEC = webBrowser1.Document.GetElementsByTagName("a");
if (HEC.Count > 0)
{
for (int i = 0; i < HEC.Count; i++)
{
MessageBox.Show("Page : " + HEC[i].InnerText+" - Link : " + HEC[i].GetAttribute("href"));
}
}



پست دومتون رو درست متوجه نشدم منظورتون چیه !

alijuventusi
چهارشنبه 22 مرداد 1393, 01:47 صبح
<div class='b'><a href='http://domain.ge/?showuser=116350'>tbiliso_city</a>,Hello World !</div><div class='c'><a href='http://domain.ge/?showuser=116350'>tbiliso_city</a>,Hello World !</div><div class='d'><a href='http://domain.ge/?showuser=116350'>tbiliso_city</a>,Hello World !</div><div class='e'><a href='http://domain.ge/?showuser=116350'>tbiliso_city</a>,Hello World !</div>
این کد من است.کلاس های b c d e
هر کدام از این صفت ها مقادیر مختلف دارند نحوه ی دسترسی به این e c b d چگونه است ؟

alijuventusi
چهارشنبه 22 مرداد 1393, 01:49 صبح
سلام دوست عزیز ، در خصوص پست اول تون از کد زیر استفاده کن :



HtmlElementCollection HEC = webBrowser1.Document.GetElementsByTagName("a");
if (HEC.Count > 0)
{
for (int i = 0; i < HEC.Count; i++)
{
MessageBox.Show("Page : " + HEC[i].InnerText+" - Link : " + HEC[i].GetAttribute("href"));
}
}



پست دومتون رو درست متوجه نشدم منظورتون چیه !
مثال واقعی اینجاست
http://www.gsmarena.com/nokia-phones-1.php
این سایت شماره صفحه داره.میخوام شماره صفحات و لینک هر صفحه را ذخیره کنم.
چگونه میشه این کار را انجام داد.تعداد زیادی div موجوده

aminmousavi
چهارشنبه 22 مرداد 1393, 01:51 صبح
به محتویات css درون کلاس b c d e !?

اگر محتویات css رو میخواین باید بینید تو صفحه تون نوشته شده یا نه مقادیر کلاس های css ! اگر نوشته بود شاید بتونم کمکی بکنم ، اگر نوشته نشده بود ، باید فایل های css رو باز کنی و اون ها رو پارس کنی تا بتونی محتویات کلاس ها رو پیدا کنی !

alijuventusi
چهارشنبه 22 مرداد 1393, 01:54 صبح
به محتویات css درون کلاس b c d e !?

اگر محتویات css رو میخواین باید بینید تو صفحه تون نوشته شده یا نه مقادیر کلاس های css ! اگر نوشته بود شاید بتونم کمکی بکنم ، اگر نوشته نشده بود ، باید فایل های css رو باز کنی و اون ها رو پارس کنی تا بتونی محتویات کلاس ها رو پیدا کنی !
اگر در این div کلاس b قرار داشت متن درونش innertext شود
<div class='b'>
این div انتخابی و کلاس b

aminmousavi
چهارشنبه 22 مرداد 1393, 02:31 صبح
اگر قصد ربات نوشتن رو دارید مقداری باید برای استخراج مطالب خلاقیت به خرج بدید ، توی HTML هر Attribute , id , ... رو که خاص هستند و میشه برای استخراج اطلاعات استفاده کرد رو ازش استفاده کنید برای بدست آوردن لینک و نام صفحه من از کلاس nav-pages استفاده کردم :




HtmlElementCollection HEC_Div = webBrowser1.Document.GetElementsByTagName("div");
if (HEC_Div.Count > 0)
{
foreach (HtmlElement div in HEC_Div)
{
if (div.GetAttribute("className") == "nav-pages")
{
HtmlElementCollection myDiv = div.GetElementsByTagName("A");
if (myDiv.Count > 0)
{
for (int i = 0; i < myDiv.Count; i++)
{
MessageBox.Show("Page : " + myDiv[i].InnerText + " - Link : " + myDiv[i].GetAttribute("href"));
}
}
}
}
}




در خصوص پست آخرتون هم از همین کد بالا استفاده کنید و div.InnerText یا div.InnerHTML استفاده کنید

موفق باشید

alijuventusi
چهارشنبه 22 مرداد 1393, 02:44 صبح
تشکر دقیقا همین رو میخواستم
خودم با این کد مشکل رو حل کردم اما قصدم خواندن از کلاس بود که به شما لطف بزرگی کردید و فرمودید

HtmlElement h = webBrowser1.Document.GetElementsByTagName("div")[25];
MessageBox.Show(h.InnerText);
HtmlElementCollection sss= webBrowser1.Document.GetElementsByTagName("div")[25].GetElementsByTagName("a");
foreach (HtmlElement item in sss)
{
listBox1.Items.Add(item.GetAttribute("href"));
}