Parsa HTML

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Håller på med ett litet projekt där jag behöver parsa html. Har läst lite olika artiklar där det står hur man parsar xml. Men har inte riktigt fått det att fungera. Då jag läser in webbplatsen har jag lyckats spara ner informationen i en sträng men då klarar den inte av å ä ö och sen så bryter den alla <td> efter 6 tecken. Så om det står

<td>Glassbilen</td>

blir utskriften ifrån min NSString "<td>Glassbi.</td>"

Hittade en funktion som hette NSXMLDocumentTidyHTML som tar bort alla html taggar vilket iofs är bra men problemet men främmande tecken samt avkortade ord kvarstår.

Det ultimata hade varit om man på något sätt hade kunnat läsa in allt som är lagrat tabellcellerna i en array eller så och sedan bara leta igenom arrayen efter den information som är relevant.

För att komma runt att den inte kan läsa in åäö samt de avkortade orden har jag funderat på om jag i värsta fall får göra en tabell som byter ut

Glassbi. mot Glassbilen
och Sngubb. mot Snögubbe

Fast det känns som att jag gör det krångligare än vad det är då.

Någon som har några tips så är jag idel öra. Kan skicka med lite kod exempel ifall det blir tydligare då.

  • Medlem
  • Mölndal
  • 2009-01-28 12:39

Jag förstår nog inte riktigt problemet... Har du byggt en html-parser helt själv, men som är dessvärre är defekt på de punkter du räknar upp ovan? Eller har du hittat en färdig nånstans?

Vad vill du uppnå med parsningen? Bara få ut tabellceller?

och vilket språk försöker du scripta i?

edit: jag hittade ett script här: http://sourceforge.net/projects/simplehtmldom/

Oj ursäkta om jag var otydlig. Programmerar i objectiv-c och det jag vill uppnå med parsningen är bara att få ut texten som finns lagrad i cellerna.

Såhär gör jag för att koppla upp mig mot servern och hämta hem datan.

//Kopplar upp mot servern
	NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
					cachePolicy:NSURLRequestReturnCacheDataElseLoad
				 timeoutInterval:30];
	
	//Här kommer datan ifrån sidan att lagras
	NSMutableData *urlData;
	
	NSURLResponse *response;
	NSError *error;
	
	//Läser in datan ifrån servern.
	urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

Om man sedan ska spara ner XML har jag läst att man kan spara det i en array genom att bläddra ner i hierarkin till det man är intresserad av. Så för min del hade det sett ut såhär om det nu fungerar med html.

NSArray *minArray = [[urlData nodesForXPath:@"html/body/table/tr/td" error:&error] retain];

Detta har jag dock aldrig fått att fungera så istället har jag sparat ner informationen som jag laddat ner i en NSString. Det är denna sträng som jag funderar på om jag behöver parsa igenom efter den informationen som jag är intresserad av eftersom jag inte har fått ordning på ovanstående.

Bara för att kontrollera att hämtningen av informationen har fungerat som den ska så har jag provat att skriva ut strängen i ett vanligt textfält och det är då som å ä ö saknas samt att den bara läser in sex tecken och sedan avslutar med en punkt.

tackar..

  • Medlem
  • Mölndal
  • 2009-01-28 20:00

Om du verkligen bara vill ha ut texten i cellerna kan du använda ett regular expression tänker jag. Fånga varje cell som en capture group och lagra i en array eller vad du vill sen. Det blir ju egentligen ingen parsning i egentlig bemärkelse, men kan kanske funka ändå.

1
Bevaka tråden