string parse ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
string parse ?
s.a
şimdi ben idhttp ile istediğim bir siteyi açıyorum bu sitedeki linkleri almak istiyorum
mesela
<a href="http://site">Link1</a>
ben bu http://site'yi nasıl alabilirim ? forumda araştırma yaptım ama bulamadım. mrarman hocamın örneğini kontrol ettim ama nedense çözemedim yardım edermisiniz ?
teşekkürler. iyi çalışmalar
şimdi ben idhttp ile istediğim bir siteyi açıyorum bu sitedeki linkleri almak istiyorum
mesela
<a href="http://site">Link1</a>
ben bu http://site'yi nasıl alabilirim ? forumda araştırma yaptım ama bulamadım. mrarman hocamın örneğini kontrol ettim ama nedense çözemedim yardım edermisiniz ?
teşekkürler. iyi çalışmalar
Re: string parse ?
umarım spam vs. gibi işler için istemiyorsundur. eğer öyleyse gerçekten üzülürüm!
mesela bir html source kodu
yukarıdaki linki almak için href=" <> " arasındaki değeri alan bir fonksiyon yazman lazım.
bunun için basit bir örnek yazdım
örnekte RemainingTextA kullanmamızın nedeni hem tekrar aynı yeri parse etmemek hemde loopdan çıkmak için.
http://rapidshare.com/files/119794283/H ... e.zip.html
mesela bir html source kodu
Kod: Tümünü seç
<link rel="icon" href="http://i.imdb.com/favicon.ico" />
bunun için basit bir örnek yazdım
Kod: Tümünü seç
{==============================================================================
Code Example:
- HTML Parse
- http://www.delphiturkiye.com/forum/
==============================================================================}
unit Unit1;
interface
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
var
Form1: TForm1;
implementation
{$R *.dfm}
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
var
RemainingTextA: string;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
function TextBetweenA(WholeText: string; BeforeText: string; AfterText: string): string;
var
FoundPos: Integer;
WorkText: string;
begin
RemainingTextA := WholeText;
Result := '';
if BeforeText = '' then
FoundPos := 0
else begin
FoundPos := Pos(BeforeText, WholeText);
if FoundPos = 0 then
Exit;
end;
WorkText := Copy(WholeText, FoundPos + Length(BeforeText), Length(WholeText));
if AfterText = '' then
FoundPos := Length(WorkText) + 1
else begin
FoundPos := Pos(AfterText, WorkText);
if FoundPos = 0 then
Exit;
end;
Result := Copy(WorkText, 1, FoundPos - 1);
RemainingTextA := Copy(WorkText, FoundPos + Length(AfterText), Length(WorkText));
end;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
var
S, Value: string;
begin
ListBox1.Items.Clear;
S := Memo1.Text;
while True do
begin
Value := TextBetweenA(S, 'href="', '"');
if Value <> '' then
begin
S := RemainingTextA;
ListBox1.Items.Add(Value);
end
else
break;
end;
end;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
end.
http://rapidshare.com/files/119794283/H ... e.zip.html
Re: string parse ?
cevap için teşekkürler deneyeceğim.
hayır spamlarla vs. işim olmuyor. aslında daha farklı birşey için istedim yani sayfalardan istediğim karakterlerin arasını alamyordum ve soruyu sorarken link almak geldi aklıma o yüzden böyle sordum..
teşekkürler
hayır spamlarla vs. işim olmuyor. aslında daha farklı birşey için istedim yani sayfalardan istediğim karakterlerin arasını alamyordum ve soruyu sorarken link almak geldi aklıma o yüzden böyle sordum..
teşekkürler
Re: string parse ?
Kendi yazacağın parse fonksiyonu yerine, Regular expression librarysi bulup uygun syntax ile çok daha esnek bir şekilde yapabilirsin bu işlemi.
Re: string parse ?
merhaba fonksiyonla değilde undefined'in dediği yöntemle yaptım yinede fonksiyon için teşekkürler ama şimdi başka bir soruda takıldım mesela birden fazla sayfalama yapılmışsa o sayfalamayı nasıl geçicem ? yani
msn.com dan arama yaptığımızda
http://search.msn.com/results.aspx?q=as ... &FORM=MSNH > ilk sayfa
http://search.msn.com/results.aspx?q=as ... &FORM=PORE > 2. sayfa
http://search.msn.com/results.aspx?q=as ... &FORM=PORE > 3. sayfa
yani sayfalar
/results.aspx?q=asdasdasdasd&first=21&FORM=PORE
/results.aspx?q=asdasdasdasd&first=31&FORM=PORE
sayılar 21,31,41 şeklinde 10ar 10ar atarak gidiyorya işte bunları sırayla açamıyorum bir sayac ekleyip her parse edildikten sonra sayac'i +10 artırıyorum ama olmuyor yardım lütfen
amacım ilk sayfadaki istediğim bilgileri parse ettikten sonra ikinci , 3. , 4. sayfayı sırayla açmak ta ki bitene kadar
teşekkürler
msn.com dan arama yaptığımızda
http://search.msn.com/results.aspx?q=as ... &FORM=MSNH > ilk sayfa
http://search.msn.com/results.aspx?q=as ... &FORM=PORE > 2. sayfa
http://search.msn.com/results.aspx?q=as ... &FORM=PORE > 3. sayfa
yani sayfalar
/results.aspx?q=asdasdasdasd&first=21&FORM=PORE
/results.aspx?q=asdasdasdasd&first=31&FORM=PORE
sayılar 21,31,41 şeklinde 10ar 10ar atarak gidiyorya işte bunları sırayla açamıyorum bir sayac ekleyip her parse edildikten sonra sayac'i +10 artırıyorum ama olmuyor yardım lütfen
amacım ilk sayfadaki istediğim bilgileri parse ettikten sonra ikinci , 3. , 4. sayfayı sırayla açmak ta ki bitene kadar
teşekkürler
Re: string parse ?
arkadaşlar yardım lütfen..
Re: string parse ?
Sorun anlaşılmıyor, bu kadar eksik bilgiylede anlaşılabileceğini sanmıyorum. Bunun string parse la ilgisi var mı ?
Re: string parse ?
yeni başlık açmak istemedim o yüzden
şimdi yapmak istediğim şey mesela msnden birşey aratıyoruzya link
http://search.msn.com/results.aspx?q=aranacak&FORM=MSNH
böyle burdan istenilen şeyleri alıyoruz daha sonra 2. sayfayı almamız lazım ama işte bunu yapamıyorum while döngüsünü kullanıyorum ama olmuyor
2. sayfa
http://search.msn.com/results.aspx?q=aranacak&first=21 > 2. sayfa
http://search.msn.com/results.aspx?q=aranacak&first=31 > 3. Sayfa
http://search.msn.com/results.aspx?q=aranacak&first=41 > 4. sayfa
yani yapmak istediğim ilk sayfadan bilgi aldıktan sonra diğer sayfalara nasıl geçeceğim ? while ile yaptım olmadı yardım ederseniz sevinirim
teşekkürler
şimdi yapmak istediğim şey mesela msnden birşey aratıyoruzya link
http://search.msn.com/results.aspx?q=aranacak&FORM=MSNH
böyle burdan istenilen şeyleri alıyoruz daha sonra 2. sayfayı almamız lazım ama işte bunu yapamıyorum while döngüsünü kullanıyorum ama olmuyor
2. sayfa
http://search.msn.com/results.aspx?q=aranacak&first=21 > 2. sayfa
http://search.msn.com/results.aspx?q=aranacak&first=31 > 3. Sayfa
http://search.msn.com/results.aspx?q=aranacak&first=41 > 4. sayfa
yani yapmak istediğim ilk sayfadan bilgi aldıktan sonra diğer sayfalara nasıl geçeceğim ? while ile yaptım olmadı yardım ederseniz sevinirim
teşekkürler
Re: string parse ?
Kodları görmeden birşey söylenemez. Döngü içinde IdHttp Get isteğiyle yapılmaması için bir neden yok .
Re: string parse ?
Kod: Tümünü seç
var
S, link: string;
Sayac,i : integer;
Devam, Eklendi : Boolean;
begin
Sayac := 2;
While (Sayac>0) Do
Begin
Memo1.Text := inet1.openurl('http://search.msn.com/results.aspx?q=' + Edit1.Text + '&first=' + IntToStr(Sayac-1) + '&FORM=PORE');
Edit2.Text := Inet1.URL;
kaynak := Memo1.Text;
While True Do
begin
link:= YaziyiKopar(kaynak, '<h3><a href="', '"');
Eklendi := False;
For i := 0 To Listbox1.items.count-1 Do
Begin
if link = Listbox1.items[i] Then
Begin
Eklendi := True;
End;
// Next;
End;
if Eklendi = False Then
begin
S := YaziyiKopar;
Devam := True;
ListBox1.Items.Add(link);
Label2.Caption := IntToStr(Listbox1.Items.Count);
end
Else
Break;
end;
if Devam = True Then
Begin
Sayac := Sayac+1*10;
End
Else
Sayac := 0;
End;
end;
end.
edit(@undefined) : Kodlar tag içine alındı
Re: string parse ?
Kod: Tümünü seç
Memo1.Text := inet1.openurl('http://search.msn.com/results.aspx?q=' + Edit1.Text + '&first=' + IntToStr(Sayac-1) + '&FORM=PORE');
Edit2.Text := Inet1.URL;
kaynak := Memo1.Text;
Re: string parse ?
döngünün içinde değil m i:S dediğinizi yaptım yada yaptığımı zannediyorum olmadı:S