PDA

View Full Version : حرفه ای: جدا سازی رشته ها با کاراکتر خاصی



soheilnew
دوشنبه 15 خرداد 1396, 19:43 عصر
سلام
من عنوان های نتایج جستسجو از گوگلو گرفتم و با کاراکتر , از هم جدا کردم
مثال :

,معرفی ربات های تلگرام Telegram bot,معرفی ربات های تلگرام(Telegram bot) - کَــلَــک آمــوز,معرفی ربات تلگرام - Image Results,معرفی همه ربات‌های فارسی تلگرام – شاهوار دات نت,بات اینجا | مرجع ربات تلگرام,معرفی ربات تلگرام - Video Results,ربات تلگرام و شناخت امکانات آن,معرفی چند ربات برای تلگرام - وب سایت علی قاسم پور,معرفی ربات‌های کاربردی تلگرام - بخش اول - زومیت,ربات تگرام استیکرساز - botinja.com,معرفی ربات تلگرام: ارسال پیام های مخفی شده بدون امکان کپی یا ...,لیست بهترین روبات های تلگرام | ITIRAN,Free Download | Mozilla Firefox® Web Browser,Also Try

حالا میخوام بخش های اضافی رو پاک کنم همون عنوان سایت هارو مثلا :
- کَــلَــک آمــوز و – شاهوار دات نت و - وب سایت علی قاسم پور و| مرجع ربات تلگرام

یعنی فقط خود عنوان ها بمونه که با , از هم جدا شدن و عنوان های سایت ها و کارکترهای اضافی مثل | - <> و ... پاک بشن
ممنون میشم راهنمایی کنید

_behnam_
دوشنبه 15 خرداد 1396, 19:57 عصر
باید اول یه الگوی خاص پیداکنی توی رشته مورد نظرت.
این متن رو چجوری بدست میاری؟ توی گوگل جستجو میکنی ؟ توی لیست جوستجوهای گوگل عنوان سایت به تنهایی وجود داره. این متن گمون کنم متن متاتگ description هستش .
یا اگه مشه چندتا رشته بدست اومده رو قرار بده اینجا تا یه الگوی خاص توش پیدا کنیم.
اینجوری هم میشه ها ، ولی یه خورده دردسر داره.

soheilnew
دوشنبه 15 خرداد 1396, 20:05 عصر
سلام مجدد
از سایت search.com استفاده میکنم
اینم کدش برای گرفتن تگ های h3

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("h3"))
{
richTextBox2.Text = richTextBox2.Text + "," + item.InnerText;
}
حالا میخوام متن های اضافی رو پاک کنم

_behnam_
دوشنبه 15 خرداد 1396, 20:36 عصر
میتونید از Replace استفاده کنید
https://www.dotnetperls.com/regex-replace
اما شما اگر عنوان سایت رو میخواید راه بهتر دریافت مقدار تگ title هستش.
webBrowser1.Document.GetElementsByTagName("title")
یا از مقادیر متاتگ ها استفاده کنید که خیلی منظم تر و نزدیکتر به عنوان سایت هستشن.

soheilnew
دوشنبه 15 خرداد 1396, 22:47 عصر
داداش من المنت هارو گرفتم
میشه شما زحمت اون بخشو بکشی؟

_behnam_
دوشنبه 15 خرداد 1396, 23:44 عصر
داداش من المنت هارو گرفتم
میشه شما زحمت اون بخشو بکشی؟

foreach (HtmlElement h3 in webBrowser1.Document.GetElementsByTagName("h3"))
{

richTextBox2.Text= h3.Children[0].InnerText;

}

soheilnew
سه شنبه 16 خرداد 1396, 10:49 صبح
foreach (HtmlElement h3 in webBrowser1.Document.GetElementsByTagName("h3"))
{

richTextBox2.Text= h3.Children[0].InnerText;

}

دوست عزیز ممنون از توجه شما
ولی این اصلا عنوان هارو نگرفت
همون کد اولی که گذاشتم عالیه
فقط مشکل من جدا سازی اون کاراکترها هست
اگه میشه اون بخشو راهنماییم کنید

samiasoft
سه شنبه 16 خرداد 1396, 13:43 عصر
دوست عزیز ممنون از توجه شما
ولی این اصلا عنوان هارو نگرفت
همون کد اولی که گذاشتم عالیه
فقط مشکل من جدا سازی اون کاراکترها هست
اگه میشه اون بخشو راهنماییم کنید

سلام...شما چرا کار خودتونو راحت نمیکنید با گرفتن سورس و فیلترکردن با ریجکس؟

تا بیای دروب بروزر لودش کنی سرعت کار هم میاد پایین.سورس سایت رو بدست بیار و ریجکس کن

_behnam_
سه شنبه 16 خرداد 1396, 15:50 عصر
دوست عزیز ممنون از توجه شما
ولی این اصلا عنوان هارو نگرفت
همون کد اولی که گذاشتم عالیه
فقط مشکل من جدا سازی اون کاراکترها هست
اگه میشه اون بخشو راهنماییم کنید
اتفاقا خیلی راحت میگیره و نیازی ب پردازش اضافی نداره . فقط مشکل اینجاست که من واسه تست توی listbox درج میکردن. کد رو واسه شما تغییر دادم ک توی ritchtext قرار بده و هواسم نبود که = رو باید += قرار بدم.
متاسفانه شماهم بدون بررسی یه بار اجرا کردی و ....

soheilnew
سه شنبه 16 خرداد 1396, 16:36 عصر
دوست عزیزمن تست کردم که گفتم
فقط اینو میگیره : Free Download | Mozilla Firefox® Web Browser
اگه امکانش هست یه بار خودتون تست کنید

_behnam_
سه شنبه 16 خرداد 1396, 16:56 عصر
دوست عزیزمن تست کردم که گفتم
فقط اینو میگیره : Free Download | Mozilla Firefox® Web Browser
اگه امکانش هست یه بار خودتون تست کنید
پست قبلی هم گفتم که من اشتباهی به جای += توی کد = رو نشتم.

تبدیل
richTextBox2.Text= h3.Children[0].InnerText;

به

richTextBox2.Text+= h3.Children[0].InnerText;

soheilnew
سه شنبه 16 خرداد 1396, 20:02 عصر
دوست عزیز ببیند خودتون جدا نمیکنه

_behnam_
سه شنبه 16 خرداد 1396, 20:25 عصر
یجای کار اشتباه انجام دادید. سورسو میزارم ک ببینید کدش همینه.
در ضمن از WebClient کنید. من به این دلیل با وب بروزر نوشتم چون شما کدهاتون با همین بوده. اما بهتره ک از اول با WebClient این پروژه رو انجام بدید.

soheilnew
چهارشنبه 17 خرداد 1396, 11:21 صبح
دوست عزیز ممنونم واقعا
ولی نمیدونم من منظورمو شاید بد میرسونم
مشکل من فقط جدا کردن متن ها با , هست
حالا اینارو گرفتم میخوام بصورت : متن1,متن2,متن3,متن4 و ... جدا کنم

_behnam_
پنج شنبه 18 خرداد 1396, 00:56 صبح
این کاری ک شما میخواید انجام بدید چرخوندن لقمه دور سرتونه!
توی کد زیر شما اومدی موضوع هارو گرفتی و با ، به هم چسبوندی
richTextBox2.Text = richTextBox2.Text + "," + item.InnerText;

حالا دوباره میخوای اونارو با همون کاراکتر از هم جدا کنی؟
واسه جدا کردن شما باید split استفاده کنی.
https://www.dotnetperls.com/split
اما توی همون حلقه شما میتونید کارتون رو راحت انجام بدید و یا اصلا یه آرایه لیست خطی بسازید که آیتم ها جدا از هم دسترس باشن.