Pentru infovalutar (mai exact, pentru mine …) am vrut sa preiau licitatiile de la banci.
Pentru rezultatul final, vezi http://infovalutar.ro/licitatie
Dar sa vedem care a fost povestea :am inceput cu preluarea paginilor HTML . Incepusem cu HttpWebRequest – dar am descoperit la timp HtmlAgilityPack si am ramas credincios lui.
Acum, dupa preluarea paginilor HTML( de ex., http://www.banca-romaneasca.ro/main.php?did=527&code=executare+silita) a fost de ajuns un XPath + expresie regulata de parsare a text-ului din interior.
Ce mi-a produs batai de cap a fost http://vanzari.leumi.ro/bunuri_imobile.html – aveau bunurile in document Word! Ori, ca sa ii ceri celui de la Hosting sa instaleze Word-ul ca sa il instantiezi tu in ASP.NET e aproape imposibil!
Solutia : ASPOSE.WORDS – citeste documente dintre cele mai diverse si scoate un TXT superb – si asta, fara sa aiba nevoie de WORD instalat(se prea poate sa fi omorit muste cu tunul …)
Ca folosire, trebuia sa ii dau un Stream – dar cind am incercat sa ii dau stream-ul de document, mi-a zis ca nu suporta Seek. Asa incit am rezolvat cu un MemoryStream :
public string LeumiData(string URL)
{
byte[] buffer = new byte[1024*1024*4];
HttpWebRequest hwr = WebRequest.Create(URL) as HttpWebRequest;
using (WebResponse response = hwr.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (MemoryStream memoryStream = new MemoryStream())
{
int count = 0;
do
{
count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
} while (count != 0);
//ASPOSE
Document d = new Document(memoryStream);
return d.ToTxt();
}
}
}
}
Pot sa spun ca ASPOSE, daca vreti manipulare de documente, face toti banii!