C++ html parser // htmlcxx // derleme hatası

  • Konuyu başlatan Konuyu başlatan LeaveNhA
  • Başlangıç tarihi Başlangıç tarihi

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Tam 7 saattir aralıksız google amca ile bunu tartışıyorum, elimde http://htmlcxx.sourceforge.net/ bu kütüphane var, amacım c++ için güzel bir parser bulmaktı, tek kütüphanenin bu olduğunu farkettim, diğerlerini eledim kafamdan, çünki hepsi mvc için, ben mvc kullanmak istemiyorum, elimde bir başka kütüphane var, onunla çalışıyorum, bundan dolayı.

Bu kütüphaneyi bir türlü derleyip çalıştıramadım, en son dosyanın içindeki sln leri derleyip .obj dosyalarına ulaştım fakat bu sefer dev - c++ link error hatası veriyor...
hiç birşey anlamadım, ne yapmam gerekiyor sizce, benim şu an 0'dan html parser yazıcak vaktim de yok, ya aslında altı üstü html elementleri parse edip istediğim element özelliklerine dahil olanları seçmek ve içlerindeki bi kaç özelliğe erişmek falan istiyorum.

hani başka kütüphane tavsiyesi olan varsa diye açıkladım bunu.

saat 08:06 SDN ailesi, herkeze günaydın, iyi çalışmalar... :D
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
67 hit, 0 cevap, herkeze teşekkürler...

--- Mesaj Güncellendi ---

72 hit, kimsede mi ilgilenmiyor...
Ya istediğim şey, html verilerini işlemek, bu kadar ya...
Elementler arası kıyaslama falan;
name niteliği "hede" tag name'i "hödö" ve class'ı "bilmem ne" olan elementlerin belirli özelliklerine erişmek gibi bir gayem var, kimse yardımcı olamıyor mu ?
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Abi bir kişi çıkıp desin ki "aga sen napıyosu ?" hani iyi kötü yorum yok, abiler modlar, benim amacım elimdeki bir html source'den tag içeriklerine ve niteliklerine erişmek, ya hiç mi konuyla ilgili bir fikri olan yok ?

Kendi html parse algoritmamı yazmak için yeterince html söz dizim bilgim yok, ve html dünyanın en esnek söz dizimine sahip, hata payı çook fazla...
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
C# desen bir şeyler üretirim de C++ beni kasıyo :) Bu soruna en güzel http://forum.ceviz.net/ 'de cevap bulursun :)


iyi yada kötü beklediğim cevap işte bu.
aslında üstadım benim gereksinimim çokta büyük değil, html parse algoritma mantığı çok basit diye okudum, bu konuda bilginiz varsa sonuçta "sözde kod" ile birşeyler çıkarırsak ben C++'a çevirebilirim...
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
Açıkçası gelen veriler string tipinde olacağı için aradığını bulman çok da zor değil. Eğer belirli sabit bir veriyi arıyorsan Regular Expression kullanarak içeriği filtreleyip istediğini alabilirsin. C#'da WebClient objesi ile alt nodelara ulaşmak çok daha kolay ama C++ için bunu nasıl çalıştırırsın bir fikrim yok. Ama dediğim gibi string işleme ile Regex üzerinden istediğin veriyi alabilirsin...
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Açıkçası gelen veriler string tipinde olacağı için aradığını bulman çok da zor değil. Eğer belirli sabit bir veriyi arıyorsan Regular Expression kullanarak içeriği filtreleyip istediğini alabilirsin. C#'da WebClient objesi ile alt nodelara ulaşmak çok daha kolay ama C++ için bunu nasıl çalıştırırsın bir fikrim yok. Ama dediğim gibi string işleme ile Regex üzerinden istediğin veriyi alabilirsin...

güzel bir C++ xml parser buldum galiba, fakat garip bir şekilde önce "V c++ project" halinde verilmiş, sanırım derlenip birkaç dosya çıktısı elde edilicek.

sorum şu;
xml parser'da DOM tree aynı mantıkta yürümüyor mu, yani bir html dosyası parse ettirmeye çalışırsam elementlere ve niteliklerine ulaşamazmıyım ?

Ve Regex'den daha ileri düzey bir çözüm gerek bana. :(
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
XML ve HTML benzer DOM Tree'ye sahip. HTML de bir nevi XML dosyasıdır zaten. Ama küçük farklılıklar vardır ve bu yüzden dolayı XML parser dosyayı parse edemeyebilir. Çünkü aralarda CSS ve JS satırları parse işlemini kesebilir. XML'de benzeri satırlar CDATA gibi bir bloğun içine alınmalı. Elindeki saf HTML ise veriyi alabilirsin sanırım ama içinde tasarım ve programlama satırları varsa parse işlemi yarıda kesilebilir...
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
Sözüne geldim bilee, az önce bir çok kez denememe rağmen tinyxml2 ile html sayfası parse edemedim.
script taglarını kaynaktan süzmeye çalışıcam, öneriler için çok teşekkürler, html parser bulamadım, hepsi çok saçma ama ya bozuk, yada ben bir türlü bağlayıp çalıştıramadım. :D

sonucu mutlaka burda paylaşıcam, konu benden sonrakilere yararlı olsun...

şu anlık şu bilgiler var elimde...

TinyXML: bir xml parser ve 2. versiyonu ile linkde de belirtildiği gibi ileri düzey optimizasyon ve gerçekten "C++" tarzı bir tasarım var.

Kütüphane bence çok sade, 1 .h ve 1 .cpp dosyası var, bunları projenize ekledikten sonra gerekli dizin bilgilerini (bu dosyaların bilgisayarınızda hangi dizin altında hikamet ettiğini) girdikten sonra, kütüphaneyi kullanabiliyorsunuz.

sınıf tanımlarının "tinyxml2" isim uzayı altında bulunduğunu bildirmekte fayda görüyorum.

------------------------

Kullanımıyla ilgili ileri düzey bilgim yok, fakat deneme yanılma ile kütüphaneye hakim olursam başlık açıcam ve buraya linkini koyucam, hepinize kolay gelsin, tekrar teşekkürler [MENTION=25201]cgrszone[/MENTION]
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
597
Reaksiyon puanı
5
Puanları
18
İhtiyacımın, aradığım çözümden geride yer aldığını bilmiyordum. :D
Daha doğrusu Regex'in bu kadar iş bitirici olduğunu bilmiyordum diyelim...

tinyxml2 kütüphanesi tam bir şaheser, fakat benim ihtiyacımı standart c++ string sınıfı ve bu sınıfın bir kaç üye fonksiyonu gördü diyebiliriz. :D

Html parse: aslında temelde her dil gibi html'de parse işleminden geçmeli, deyimler tanımlar ve değerler bütünü haline getirilmeli...
Buna karşın html dilin yapısı gereği basit ve kavranışı kolay, hatta parse algoritması sanırım dünyanın en basit dillerinden biri, işiniz (hedefiniz) eğer tarayıcı yazmak değilse kesinlikle "deyimlerden değerlere ulaşmak" mantığı için "html parser" arayışına girmeyin, yada yazmak ile vakit kaybetmeyin.
Yukarıda belirttiğim gibi, html gerçekten söz dizimsel olarak dünyanın en esnek dillerinden biri, ve her internet sitesinin uyması gereken bir standart olmasına karşın "baş kaldırmış" bir kaç site gelir ve parser'ınızın algoritmik yapısını birbirine katar. :D

xhtml biraz daha katı kurallara sahiptir, fakat parser'ınız için gerekli söz dizimsel kuralları (duvarları :D) sağlamaya yetmiyor bence.

Deyim'den değere: Niyetiniz, hedefiniz eğer ki deyimden değere gitmek ise, istenilen verinin çeşitli regex işlemlerinden sonra elinizde olucağını kesinlikle aklınızdan çıkarmayın, sonuçta programcılık yeteneğinize kalıyor... (ama her zaman mümkün ! :D )

Açtığım başlık sonundaki deneyimlerim: Regex küçümsenicek birşey değil, siz siz olun adını duyduğunuzda en azından saygı gösterin ve bir kaç küçük kod yazın (ihtiyacınıza göre)...
Nihai düşünce'ye eminim ulaştırıcaktır...

Deneyimlerim bunlar üstad'ım, varsa eklemek istedikleriniz, hazır post'u hortlatmışken karanlık yerleri aydınlatabilirsiniz... @cgrszone

Saygılarmıla LeaveNhA...
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
Farklı bir şey eklemeyeceğim aslında :) Regex candır :) Sırf regex maskerini test edebilmek için bir ara C# ile RegexTester yazmıştım ve çok işimi gördü. Öyle böyle değil :) Ama piyasada çok çok kaliteli ve üstün seviyelerde regex maskeleri yaratan yazılımlar var. Sadece 3-5 tık yaparak şak diye sonuca ulaşabiliyorsunuz. Olmazsa olmaz nimet değerinde bir teknoloji :)
 
Üst