PDA

View Full Version : QWEbElement



ciph3r
چهارشنبه 29 مرداد 1393, 17:24 عصر
سلام دوستان
یک سوال کوچک
من می خواهم یک وب کراولر بنویسم
حالا با استفاده از QNetworkAccessManager در خواست خودم رو با استفاده از QNetworkRequest and QNetworkReply فرستادم و بعد کانکت کردم به تابع فینیش که رسپانس رو بگیرم
حالا می خواهم سورس کد اچ تی ام ال آمده رو چک کنم و محتویات داخل تگ Href رو بکشم بیرون
نمی خواهم از ریگولار استفاده کنم
کد زیر باعث میشه برنامه کرش کنه ولی دلیلشو نمیدونم
آخ از دست این دیباگر کیوت فرمورک

کد :


void crawler::finished ( QNetworkReply * reply ){
QString source(reply->readAll());
QWebElement element;
QWebElementCollection collection;
page->mainFrame()->setHtml(source);
page->mainFrame()->documentElement();
collection = page->mainFrame()->findAllElements("a");
foreach(element, collection){
QUrl currenturl;

currenturl = QUrl(element.attribute("href"));
ui->plainTextEdit->setPlainText(element.toPlainText()); } }

ciph3r
شنبه 01 شهریور 1393, 16:16 عصر
خوب حالا دیدم که کسی جواب نداد
اشکال نداره اگر خودم پیداش کردم اینجا هم میزارم که حداقل یکی دیگه مثل من صاف نشه
حالا یه سوال جالب
به جای المنت کردن می خواهم ریگولار بزنم
تا جایی که دیدم ریگولار تو کیوت جوریه که بهش میگی این خط از سورس اچ تی ام ال رو برام جدا کن و مابقیشو پاک کن !
من فقط ریپلیس و ریموو دیدم
حالا من می خوام بهش بگم که فقط تگ های href رو برام جدا کن و برای بیار و کاری به مابقیه سورس نداشته باشه
اگر هر دفعه واسم تمامه سورس رو پاک کنه برنامه خیلی سنگین میشه

omid_kma
دوشنبه 03 شهریور 1393, 12:49 عصر
تا جایی که دیدم ریگولار تو کیوت جوریه که بهش میگی این خط از سورس اچ تی ام ال رو برام جدا کن و مابقیشو پاک کن !

indexIn استفاده کنی چیزی پاک نمیشه صرفا یک iterator هست که داخل رشته جابه جا میشه پس نه سنگین نمیشه !

ciph3r
دوشنبه 03 شهریور 1393, 15:58 عصر
می تونی یه مثال کوچیک عملی بزنی یا سورسی چیزی بزاری ؟