Hallo an die Programmierergemeinde.
Ich hab mich nach längerem googeln jetzt doch mal entschlossen hier die Frage zu stellen.
Bin ein absoluter Neuling was programmierung anbelangt und bin auf der Suche nach einem script um eine Telefonnummernrückwärtssuche über das örtliche mit python zu realisieren.
Hab das ganze mit einem shellscript probiert, funktioniert auch soweit habe jetzt aber schwiergkeiten aus python heraus das script zu starten.
wie gesagt absoluter Neuling.
Ziel wäre bei eigehendem Anruf auf Linuxserver wird das script incomming.py der capisuite aufgerufen, jetzt sollte geprüft werden ob eine Nummer übermittelt wurde, wenn ja dann Abfrage ob schon ein Eintrag in der Mysqldatenbank besteht wenn ja dann ende wenn nein dann über das Örtliche abfragen, bei gefundenem Eintrag Daten auslesen und in mysqldatenbank eintragen,
wenn kein eintrag gefunden dann abfrage über andere Rückwärtssuche z.B 11880
wenn kein Eintrag gefunden dann ende ansonsten halt diesen eintrag in mysqldatenbank.
Ist sowas möglich oder gibt es vielleicht schon so ein script zumindest ansatzweise.
Gruß und Danke schon mal miami
PS. Ist mein erster Post.
Ich hoffe ich bin in dieser Rubrik richtig.
Rückwärtssuche das Örtliche mit Python aber wie
Hi,
ich habe sowas vor einiger Zeit mal ganz rudimentär gebaut.
Die Seiten bei Das Örtliche haben sich zwischenzeitlich geändert, sprich Du mußt das entsprechend anpassen.
Ciao,
dev
Edit (Leonidas): Code in Python-Tags gesetzt.
ich habe sowas vor einiger Zeit mal ganz rudimentär gebaut.
Code: Alles auswählen
def search_doe(self,number):
from twisted.web.client import getPage
from BeautifulSoup import BeautifulSoup, Null
def got_page(x):
soup = BeautifulSoup(x)
r = soup.first('a',{'class' : 'blb'})
if r != Null:
self.addContact2DB(self.contacts,
unicode(string.strip(r.string),'latin-1'),
number,
auto='yes')
search_uri = """http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?\
kw_invers=%s\
&main=Antwort&\
AKTION=START_SUCHE&\
SEITE=INVERSSUCHE&rg=1&s=2"""
search_uri = search_uri % number
getPage(search_uri).addCallback(got_page)
Ciao,
dev
Edit (Leonidas): Code in Python-Tags gesetzt.
Hi dev,
vielen Dank für die schnelle Antwort. Hilft mir leider nicht viel weiter.
Bin wie gesagt absoluter Neuling auf dem Gebiet.
Hier hab ich mal das Shellscript das ich erstellt habe für die Abfrage so sollte das mit Python funktionieren.
In meinem script fehlt allerdings noch der Eintrag in die Datenbank.
Vielleicht kann mir das jemand in python umsetzen. Das wäre super.
im voraus schon mal vielen dank
Ciao,
miami
Edit (Leonidas): Code in Tags gesetzt.
vielen Dank für die schnelle Antwort. Hilft mir leider nicht viel weiter.
Bin wie gesagt absoluter Neuling auf dem Gebiet.
Hier hab ich mal das Shellscript das ich erstellt habe für die Abfrage so sollte das mit Python funktionieren.
In meinem script fehlt allerdings noch der Eintrag in die Datenbank.
Code: Alles auswählen
#!/bin/sh
#
TMPFILE="/mein ordner/tmpsuche"
TEXT="$1"
if [ "$TEXT" == "" ]; then
NAME="anonymer Anrufer"
DETAILS="Keine details"
else
NUMMER=`echo $TEXT | sed -e "s/\ //g" -e "s/0049/0/"`
wget "http://www2.dasoertliche.de/?id=3339GS10886550222242399&la=de&form_name=detail&lastFormName=search_inv&ph=$NUMMER&recFrom=1&hitno=99&kgs=11000000&zvo_ok=1&page=TREFFERLISTE&context=TREFFERLISTE&action=TEILNEHMER&orderby=name&ttforderby=rel&la=de&detvert_ok=1" -O $TMPFILE
NAME=`grep detail_top $TMPFILE | sed -e "s/<div class=\"detail_top\">//; s/<\/div> //;"`
if [ "$NAME" == "" ]; then
wget "http://www.11880.com/Suche/index.cfm?fuseaction=Suche.rueckwaertssucheresult&init=true&change=false&searchform=Rueckwaerts&tel=$NUMMER" -O $TMPFILE
NAME=`grep nam_header $TMPFILE | sed -e "s/<h1 class=\"nam_header\">//; s/<\/h1>//;"`
if grep "Es wurden keine Treffer gefunden" $TMPFILE > /dev/null; then
NAME="$NUMMER"
DETAILS="Kein Eintrag $2"
echo $NAME $DETAILS
else echo $NAME
fi;
else
im voraus schon mal vielen dank
Ciao,
miami
Edit (Leonidas): Code in Tags gesetzt.
So ungefähr nach dem Bash-Skript könnte das so aussehen:
Die URL bei das Örtliche funktioniert nicht, da war ich jetzt zu faul herauszufinden warum. Bei der Funktion ist also nie ein Treffer und die Ergebnisse kommen immer von 11880.
Code: Alles auswählen
import sys
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
def get_soup(url):
url_file = urlopen(url)
result = BeautifulSoup(url_file,
convertEntities=BeautifulSoup.HTML_ENTITIES)
url_file.close()
return result
def lookup_oertliche(phone_number):
soup = get_soup('http://www2.dasoertliche.de/?id=3339GS10886550222242399&'
'la=de&form_name=detail&lastFormName=search_inv&'
'ph=%s&recFrom=1&hitno=99&kgs=11000000&zvo_ok=1&'
'page=TREFFERLISTE&context=TREFFERLISTE&'
'action=TEILNEHMER&orderby=name&ttforderby=rel&'
'la=de&detvert_ok=1' % phone_number)
result = soup.find('div', {'class': 'detail_top'})
if result:
return result.string.strip()
else:
return u''
def lookup_11880(phone_number):
soup = get_soup('http://www.11880.com/Suche/index.cfm?'
'fuseaction=Suche.rueckwaertssucheresult&'
'init=true&change=false&searchform=Rueckwaerts&'
'tel=%s' % phone_number)
result = soup.find('h1', {'class': 'nam_header'})
if result:
return result.string
else:
return u''
def clean_phone_number(phone_number):
result = ''.join(char for char in phone_number if char.isdigit())
if result.startswith('0049'):
result = '0' + result[4:]
return result
def main():
if len(sys.argv) < 2:
print 'Anonymer Anrufer'
else:
phone_number = clean_phone_number(sys.argv[1])
for lookup_func in (lookup_oertliche, lookup_11880):
name = lookup_func(phone_number)
if name:
break
if name:
print name
else:
print 'Kein Name zu %s gefunden' % phone_number
if __name__ == '__main__':
main()
Hi BlackJack
erstmal vielen Dank für den Code, werde am Wochenende mal ausprobieren warum der Link mit "Das Örtliche" nicht funktioniert.
Dafür hätte ich Wochen gebraucht.
Ich hab immer nur abends und am Wochende Zeit sowas zu testen, das dauert dann immer ewig.
Also nochmal Herzlichen Dank für die schnelle Hilfe.
Ist echt ein super Forum hier.
CIAO
miami
erstmal vielen Dank für den Code, werde am Wochenende mal ausprobieren warum der Link mit "Das Örtliche" nicht funktioniert.
Dafür hätte ich Wochen gebraucht.
Ich hab immer nur abends und am Wochende Zeit sowas zu testen, das dauert dann immer ewig.
Also nochmal Herzlichen Dank für die schnelle Hilfe.
Ist echt ein super Forum hier.
CIAO
miami