Hämta abonnentuppgifter från Eniro med ASP/PHP.

Permalänk
Medlem

Hämta abonnentuppgifter från Eniro med ASP/PHP.

Hej,

Jag skulle behöva ett enkelt sätt att hämta namn och adressuppgifter från eniro eller hitta.se via ASP. Jag kan programmera i ASP men jag är skitdålig på att parsa information. Vet att det kan vara lätt att hämta ut en träff och parsa informationen via http://wap.eniro.se då det är mycket mindre kod att tugga sig igenom. http://wap.hitta.se kanske är lättare.
Verkar vara mindre kod.

Jag skulle alltså vilja köra typ sok.asp?nr=070123123 och få ett svar tillbaka i "plain-text" typ. Självklart skall ett nummer som inte hittas anges som Okänt eller liknande.

Någon som sitter på ett sånt här script eller som orkar hjälpa mig med ett?
Jag vet inte om ett nummer kan få flera träffar men jag tvivlar på det.

Jag kan tänka mig att någon redan ställt denna fråga men jag kan inte hitta någon tråd tyvärr.

Tack på förhand!

Edit:
Det kan gå bra i PHP också. Bara för mig att läsa av php-filens resultat med ASP och göra vad jag vill med det sen.

Permalänk
Medlem

gjorde ett exempel i asp.net skriven med c#

för att söka på ett nummer är queryn såhär:
parse.aspx?nr=123456

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> string html; public void Page_Load(object sender, EventArgs e) { //hämta in vårt telefonnummer string tele = Request.QueryString["nr"]; //skapa upp en webclient System.Net.WebClient webis = new System.Net.WebClient(); //skaffa lite data Byte[] byte_in_page = webis.DownloadData("http://wap.eniro.se/fp/list.jsp?search_word=" + tele + "&where=&lang=sv"); Encoding enc = Encoding.GetEncoding("iso-8859-1"); html = enc.GetString(byte_in_page); //ok nu har vi svaret. //leta efter förtsta <a href= int cursor = html.IndexOf("<a href="); //ta bort allt fram tills denna (inkl <a href) html = html.Remove(0, cursor + 8); //nu kan vi med säkerhet leta efter första > och ta bort till denna (slår ihop lite kod) html = html.Remove(0, cursor = html.IndexOf(">") + 1); //leta reda på </a> som kommer direkt efter namnet. cursor = html.IndexOf("</a>"); //ta bort den och allt efterföljande html = html.Remove(cursor); //printa ut svaret Label1.Text = html; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </form> </body> </html>

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem

Tack. Synd att jag inte har koll på asp.net... än
Kan dock hämta infon med vanlig ASP i det här fallet också!

Tack igen, ska snarast testas.

Edit: Får jag med adressen i exemplet ovan?

Edit2:

Så här blir det:

Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1501: No overload for method 'Remove' takes '1' arguments Source Error: Line 28: cursor = html.IndexOf("</a>"); Line 29: //ta bort den och allt efterföljande Line 30: html = html.Remove(cursor); Line 31: Line 32: //printa ut svaret

Permalänk
Medlem

denna tar bara ut namnet. Det går att modifiera denna så den fixar det. Efter namnet kommer det en länk som i nuvarande kod skrotas. Om du parsar ut den också så kan du med den göra ett nytt anrop med "webis" till den adressen och få tillbaka källkoden för adresssidan. Sedan är det bara parsa den på samma sätt som namnet.

edit. Kör du .net 2.0?

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Garnet
denna tar bara ut namnet. Det går att modifiera denna så den fixar det. Efter namnet kommer det en länk som i nuvarande kod skrotas. Om du parsar ut den också så kan du med den göra ett nytt anrop med "webis" till den adressen och få tillbaka källkoden för adresssidan. Sedan är det bara parsa den på samma sätt som namnet.

Här kommer ju grejen in igen då att jag inte alls kan programmera i asp.net/C#.

http://wap.hitta.se/ kanske är enklare?

Permalänk
Medlem

hehe ok. jag kan göra ett försök....

EDIT.
Klart. Den blev tom mindre Skippade all htmlkod från min utskrift med, så nu blir det bara det viktiga. Jag sparade eniros <br/> mellan uppgifterna, så har du något att navigera med sen.

<%@ Page Language="C#" %> <script runat="server"> string html; public void Page_Load(object sender, EventArgs e) { //hämta in vårt telefonnummer string tele = Request.QueryString["nr"]; //skapa upp en webclient System.Net.WebClient webis = new System.Net.WebClient(); string enirourl = "http://wap.eniro.se/privatpersoner/list.jsp?search_word=" +tele+ "&&from=1&similar=&cop=2"; //skaffa lite data Byte[] byte_in_page = webis.DownloadData(enirourl); Encoding enc = Encoding.GetEncoding("iso-8859-1"); html = enc.GetString(byte_in_page); //ok nu har vi svaret. //leta efter förtsta <a href= int cursor = html.IndexOf("<a href="); //ta bort allt fram tills denna (inkl <a href) html = html.Remove(0, cursor + 8); //nu kan vi med säkerhet leta efter första > och ta bort till denna (slår ihop lite kod) html = html.Remove(0, cursor = html.IndexOf(">") + 1); //leta reda på </a> som kommer direkt efter namnet och ta bort den. html = html.Remove(html.IndexOf("</a>"), 4); //leta reda på nästa <a hef, den kommer direkt efter adressen //ta bort all överfödig kod html = html.Remove(html.IndexOf("<a href=")); //trimma bort nummret och punkten (typ "1.") html = html.Remove(0, cursor = html.IndexOf(".")+1); //printa ut svaret Response.Write(html); } </script>

EDIT 2:

Nja, jag tycker inte hitta är lättare då de använder POST för att skicka uppgifterna. Då måste man skapa en hel http header för att kunna skicka in, nu räcker det med att man skickar en url med lite data. GET FTW!

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Garnet
hehe ok. jag kan göra ett försök....

EDIT. Klart. Den blev tom mindre Skippade all htmlkod från min utskrift med, så nu blir det bara det viktiga. Jag sparade eniros <br/> mellan uppgifterna, så har du något att navigera med sen.

<%@ Page Language="C#" %> <script runat="server"> string html; public void Page_Load(object sender, EventArgs e) { //hämta in vårt telefonnummer string tele = Request.QueryString["nr"]; //skapa upp en webclient System.Net.WebClient webis = new System.Net.WebClient(); string enirourl = "http://wap.eniro.se/privatpersoner/list.jsp?search_word=" +tele+ "&&from=1&similar=&cop=2"; //skaffa lite data Byte[] byte_in_page = webis.DownloadData(enirourl); Encoding enc = Encoding.GetEncoding("iso-8859-1"); html = enc.GetString(byte_in_page); //ok nu har vi svaret. //leta efter förtsta <a href= int cursor = html.IndexOf("<a href="); //ta bort allt fram tills denna (inkl <a href) html = html.Remove(0, cursor + 8); //nu kan vi med säkerhet leta efter första > och ta bort till denna (slår ihop lite kod) html = html.Remove(0, cursor = html.IndexOf(">") + 1); //leta reda på </a> som kommer direkt efter namnet och ta bort den. html = html.Remove(html.IndexOf("</a>"), 4); //leta reda på nästa <a hef, den kommer direkt efter adressen //ta bort all överfödig kod html = html.Remove(html.IndexOf("<a href=")); //trimma bort nummret och punkten (typ "1.") html = html.Remove(0, cursor = html.IndexOf(".")+1); //printa ut svaret Response.Write(html); } </script>

Får samma felmeddelande som jag postade tidigare. Dvs:

Server Error in '/' Application. Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1501: No overload for method 'Remove' takes '1' arguments Source Error: Line 29: //leta reda på nästa <a hef, den kommer direkt efter adressen Line 30: //ta bort all överfödig kod Line 31: html = html.Remove(html.IndexOf("<a href=")); Line 32: Line 33: //trimma bort nummret och punkten (typ "1.")

Permalänk
Medlem

har du .net 2.0 installerat på servern?
För mig har Remove följande:

Remove(int startIndex)
Remove(int startIndex, int count)

Så att den bara tar ett argument ska funka...

Här har du en adress till en fungerande iaf. Lade upp den på min server.
http://johan.lanreg.se/parse2.aspx?nr=123456

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Garnet
har du .net 2.0 installerat på servern?
För mig har Remove följande:

Remove(int startIndex)
Remove(int startIndex, int count)

Så att den bara tar ett argument ska funka...

Här har du en adress till en fungerande iaf. Lade upp den på min server.
http://johan.lanreg.se/parse2.aspx?nr=123456

Okey. Ska kolla om jag har 2.0. Annars får jag fixa det.
http://johan.lanreg.se/parse2.aspx?nr=08789456.
Det är ett nummer som inte finns. Kan man få ut "okänt" om det inte finns?

Permalänk
Medlem

sådär, nu står det okänt om man skriver in ett felaktigt nummer.

den kollen blev ganska stor och ful, gick inte att bara jämföra "se Startsidan<br/>" mot värdet av html variabeln, så jag gjorde två char-arrayer som loopas igenom och stämmer inte tecknen så är det ett nummer som _finns_ och en flagga sätts.

koden:

<%@ Page Language="C#" %> <script runat="server"> string html; public void Page_Load(object sender, EventArgs e) { //hämta in vårt telefonnummer string tele = Request.QueryString["nr"]; //skapa upp en webclient System.Net.WebClient webis = new System.Net.WebClient(); string enirourl = "http://wap.eniro.se/privatpersoner/list.jsp?search_word=" +tele+" &from=1&similar=&cop=2"; //skaffa lite data Byte[] byte_in_page = webis.DownloadData(enirourl); Encoding enc = Encoding.GetEncoding("iso-8859-1"); html = enc.GetString(byte_in_page); //ok nu har vi svaret. //leta efter förtsta <a href= int cursor = html.IndexOf("<a href="); //ta bort allt fram tills denna (inkl <a href) html = html.Remove(0, cursor + 8); //nu kan vi med säkerhet leta efter första > och ta bort till denna (slår ihop lite kod) html = html.Remove(0, cursor = html.IndexOf(">") + 1); //leta reda på </a> som kommer direkt efter namnet och ta bort den. html = html.Remove(html.IndexOf("</a>"), 4); //leta reda på nästa <a hef, den kommer direkt efter adressen //ta bort all överfödig kod html = html.Remove(html.IndexOf("<a href=")); //trimma bort nummret och punkten (typ "1.") html = html.Remove(0, cursor = html.IndexOf(".")+1); //printa ut svaret html.Trim(); String kalle = "se Startsida<br/>"; char[] test = html.ToCharArray(); char[] test2 = kalle.ToCharArray(); bool unknown = true; for(int j = 0; j<17; j++) { if (test[j].Equals(test2[j])){} else{ unknown = false; } } if (unknown == true) { Response.Write("okänt"); } else { Response.Write(html); } } </script>

Även denna ligger på http://johan.lanreg.se/parse2.aspx?nr=12345

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Garnet
sådär, nu står det okänt om man skriver in ett felaktigt nummer.

den kollen blev ganska stor och ful, gick inte att bara jämföra "se Startsidan<br/>" mot värdet av html variabeln, så jag gjorde två char-arrayer som loopas igenom och stämmer inte tecknen så är det ett nummer som _finns_ och en flagga sätts.

koden:

Även denna ligger på http://johan.lanreg.se/parse2.aspx?nr=12345

Riktigt bra! Tack. Skall använda denna tjänst för att snabbt få fram telefonnummer privat. Rätt stabilt.

Ska testa servern sen. Har dock ett stort problem med servern så jag måste ominstallera den innan jag kan ens se om jag har ASP2.0 installerat. Har skapat en tråd om mina problem för länge sedan. 0 svar. :/

Permalänk

Har en annan fråga på typ samma topic, kan man få fram vilka telefonnummer som "bor" på en viss adress, eller vilka personer som bor där?

Visa signatur

Macbook Vit | Macbook Unibody | D80 | iPod Touch | iPhone 3GS

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Filleokus
Har en annan fråga på typ samma topic, kan man få fram vilka telefonnummer som "bor" på en viss adress, eller vilka personer som bor där?

För att få fram vilka personer som bor på en viss adress så går det att använda www.upplysning.se efter att man är inloggad.