[Python regexp] E-mail adres filteren uit tekst.

Pagina: 1
Acties:
  • 172 views sinds 30-01-2008
  • Reageer

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Ik ben bezig met een e-mail harvester. Begrijp me goed, niet om te spammen :P Maar puur om van te leren :) Is gewoon grappig.

Ok, nu is het zo dat mijn programma een source van een site uitleest.. die source doorkijkt en de e-mail adressen netjes onder elkaar uitspuugt.

Het werkt bijna helemaal. Losse mailadressen e.d. heb ik er zo uit.. ik loop pas tegen de problemen aan bij bijv dit:

<a href="mailto:testmail@test.nl">test account e-mail</a>

Ik wil dus dat mijn programma dmv een regexp testmail@test.nl kan filteren :)

Om snel te kijken of ik een goede regexp heb geschreven gebruik ik het programma kodos :) Wat zeer lekker is :)

Hiermee heb ik bijv dit al gemaakt, en wat dus ook lijkt de matchen:
Afbeeldingslocatie: http://img61.exs.cx/img61/4811/regexppy2wr.jpg
code:
1
(?<=\<a href\=\"mailto\:).+@[a-zA-Z0-9_-]+.[a-zA-Z]{2,4}


Maar als ik dat dan in mijn python code als regexp zegt dmv een re.compile("(?<=\<a href\=\"mailto\:).+@[a-zA-Z0-9_-]+.[a-zA-Z]{2,4}") en match werkt het niet.

Terwijl het me wel lukt om adressen zoals
test@test.com,
test.test@test.test.com
test@test.com>
test(at)test.com

Te filteren met natuurlijk weer andere regexpjes :)

Waarom pakt hij deze niet? Terwijl kodos aangeeft dat ie wel matched? Ik heb het gevoel dat je hem nog mee moet geven dat als hij bij de " komt uit de <a href="mailto:testmail@test.nl"> (die laatste " dus) dat ie moet stoppen met matchen en dat hij de string dat ie tot dat moment heeft gevonden moet opslaan.
Ben ik zo duidelijk genoeg? Erg makkelijk te verwoorden is het niet :)

Ik heb btw al erg veel gegoogeld en op GoT gezocht. Heb opzich lekker geleerd hoe regexpjes nu ongeveer werken maar hier kom ik toch niet helemaal uit :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Tiny
  • Registratie: Mei 2003
  • Laatst online: 24-03 15:36

Tiny

Wat eten we?

Je kijkt alleen naar het domein, en niet wat er voor het apenstaartje staat.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
PencakSilat schreef op woensdag 09 maart 2005 @ 16:33:
Je kijkt alleen naar het domein, en niet wat er voor het apenstaartje staat.
Dat klopt iid. Dat moet ook zo van mij.
Hij pakt als het goed is nu alles wat achter de : van <a href="mailto: komt en voor de @ komt.
Maar wat wil je er verder mee zeggen :? :)

Nu zou hij ook bijv:
435346hrthrthrwthrth4534636thtrmhnrtw@hoi.com pakken bijv. Maar dat is niet erg :)

Waar ik mee zit is dat nu mijn programma NIKS aan output geeft.
Ik probeer dit dus uit te lezen: http://ezeeman.demon.nl/files/mailtest.html

[ Voor 29% gewijzigd door DeMoN op 09-03-2005 16:48 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Kick... Afbeeldingslocatie: http://www.xs4all.nl/~olie/fok/smilies/Smilies/tweaksmiley.gif

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Kick.. again ;( Afbeeldingslocatie: http://www.xs4all.nl/~olie/fok/smilies/Smilies/draztap.gif

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Toch nog maar eens een kickje. Ik ben er nog niet uit.. :/ :)

[ Voor 4% gewijzigd door DeMoN op 13-03-2005 18:40 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Ik heb ff voor je geknutseld en ik kom tot het volgende:

Python:
1
2
3
4
5
>>> import re
>>> p = re.compile(r"<a.+?href\=\"mailto\:(.*?)\".*?>")
>>> m = p.match('<a href="mailto:testmail@test.nl">test account e-mail</a>')
>>> m.group(1)
'testmail@test.nl'


De regex is dus <a.+?href\=\"mailto\:(.*?)\".*?>, en je gebruikt hem als raw string. Als je dat wil, kan je nog kijken of er na mailto: wel iets staat wat een e-mail adres zou kunnen zijn.

Ik kan het niet helemaal overzien, maar ik denk inderdaad dat je vergeten bent een "stop" aan je regex toe te voegen.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Verwijderd schreef op zondag 13 maart 2005 @ 18:58:
Ik heb ff voor je geknutseld en ik kom tot het volgende:

Python:
1
2
3
4
5
>>> import re
>>> p = re.compile(r"<a.+?href\=\"mailto\:(.*?)\".*?>")
>>> m = p.match('<a href="mailto:testmail@test.nl">test account e-mail</a>')
>>> m.group(1)
'testmail@test.nl'


De regex is dus <a.+?href\=\"mailto\:(.*?)\".*?>, en je gebruikt hem als raw string. Als je dat wil, kan je nog kijken of er na mailto: wel iets staat wat een e-mail adres zou kunnen zijn.

Ik kan het niet helemaal overzien, maar ik denk inderdaad dat je vergeten bent een "stop" aan je regex toe te voegen.
Hm ok dan :)
Bedankt.. :)
Ik zie ook meteen dat jij heel anders met die regexpjes in Python omgaat. Ik doe het een stuk simpeler. group() heb ik bijv. nooit gebruikt..
Hier een stukje code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def ScanSiteSourceForAddresses(sitesourcescan_l):
    global re
    #maak een string van de site source
    sourcetoscan = str(sitesourcescan_l)
    #wat moet er gefilterd worden? flikker dat in een list
    regexpList = (re.compile("HIEREENREGEXPNAARWENS"),re.compile("HIERNOGEENTJE"),re.compile("ENZ.."))
    #define alvast addresslist
    addresslist = ""
    #scan elke line van sourcetoscan per block..
    for line in sourcetoscan.split():
        #check of een block matched met een regexp in de regexplist
        for re in regexpList:
            match = re.match(line)
            #voeg de matchende line toe als het een match is
            if match:
                addresslist = addresslist + line + "\n"                         
    #return de hele addressList... misschien handig voor 'future use'
    print "Done."
    return addresslist


Maar ik klooi wel even verder. Zal nog even wat beter kijken naar hoe je effectiever met regexps kan omgaan in Python.
Tips zijn altijd welkom natuurlijk, ik programmeer nog niet zo lang ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Hier is een goede tutorial over Python en regular expressions.

http://diveintopython.org/regular_expressions/index.html

succes

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Verwijderd schreef op maandag 14 maart 2005 @ 09:57:
Hier is een goede tutorial over Python en regular expressions.

http://diveintopython.org/regular_expressions/index.html

succes
Nog bedankt!
Dit ga ik zeker 'bestuderen' B) ;)

[ Voor 3% gewijzigd door DeMoN op 14-03-2005 13:23 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 16:54
DeMoN schreef op zondag 13 maart 2005 @ 20:39:
[...]


Hm ok dan :)
Bedankt.. :)
Ik zie ook meteen dat jij heel anders met die regexpjes in Python omgaat. Ik doe het een stuk simpeler. group() heb ik bijv. nooit gebruikt..
Hier een stukje code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def ScanSiteSourceForAddresses(sitesourcescan_l):
    global re
    #maak een string van de site source
    sourcetoscan = str(sitesourcescan_l)
    #wat moet er gefilterd worden? flikker dat in een list
    regexpList = (re.compile("HIEREENREGEXPNAARWENS"),re.compile("HIERNOGEENTJE"),re.compile("ENZ.."))
    #define alvast addresslist
    addresslist = ""
    #scan elke line van sourcetoscan per block..
    for line in sourcetoscan.split():
        #check of een block matched met een regexp in de regexplist
        for re in regexpList:
            match = re.match(line)
            #voeg de matchende line toe als het een match is
            if match:
                addresslist = addresslist + line + "\n"                         
    #return de hele addressList... misschien handig voor 'future use'
    print "Done."
    return addresslist


Maar ik klooi wel even verder. Zal nog even wat beter kijken naar hoe je effectiever met regexps kan omgaan in Python.
Tips zijn altijd welkom natuurlijk, ik programmeer nog niet zo lang ;)
Paar dingetjes:
  • 'global re' zou je niet moeten gebruiken. Python zoekt automatisch in de global scope als een variabele niet in de local scope gevonden kan worden (simpel gezegd). Alleen als je een globale variable wil wijzigen is het nodig om 'global' te gebruiken. Je doet dat hier ('re in regexpList'), maar het is een beter idee om de 're' module niet te overriden, om verwarring te voorkomen. Verander 're in regexpList' dus bijv. in 'regexp in regexpList'.
  • Waarom 'str' over je source? Wat pass je eigenlijk aan deze functie?
  • Waarom zoek je regel voor regel? Kijk eens naar re.findall().
  • Als je regel voor regel blijft zoeken; matches kun je het beste bij houden door middel van een list: 'addresslist = ""' -> 'addresslist = []' en 'addresslist = addresslist + line + "\n"' -> 'addresslist.append(line)'. En dan aan het einde "\n".join(addresslist). String concatenation is redelijk langzaam in Python. Overigens zou ik zelf gewoon een list teruggeven en dan de callende functie iets er mee laten doen.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Johannes schreef op maandag 14 maart 2005 @ 17:16:
[...]

Paar dingetjes:
  • 'global re' zou je niet moeten gebruiken. Python zoekt automatisch in de global scope als een variabele niet in de local scope gevonden kan worden (simpel gezegd). Alleen als je een globale variable wil wijzigen is het nodig om 'global' te gebruiken. Je doet dat hier ('re in regexpList'), maar het is een beter idee om de 're' module niet te overriden, om verwarring te voorkomen. Verander 're in regexpList' dus bijv. in 'regexp in regexpList'.
  • Waarom 'str' over je source? Wat pass je eigenlijk aan deze functie?
  • Waarom zoek je regel voor regel? Kijk eens naar re.findall().
  • Als je regel voor regel blijft zoeken; matches kun je het beste bij houden door middel van een list: 'addresslist = ""' -> 'addresslist = []' en 'addresslist = addresslist + line + "\n"' -> 'addresslist.append(line)'. En dan aan het einde "\n".join(addresslist). String concatenation is redelijk langzaam in Python. Overigens zou ik zelf gewoon een list teruggeven en dan de callende functie iets er mee laten doen.
Zeer goede tips :)
Ik gooi mijn programma binnenkort ff om :P
btw.. die global re (je eerste puntje) die moest ik wel gebruiken omdat hij anders heel re niet herkende terwijl hij wel in de import zit :|
Ik heb btw die 'str' over de source gewoon weggelaten nu. Had de indruk dat dat nodig was om die source uit te kunnen lezen :)

Ik ben alweer wat verder... nogmaals thx :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Ok, ik heb mijn programma nu wat bijgesteld. :)

Maar hij wil nog steeds die mailto links niet pakken... heeft dit dus gewoon te maken doordat ik perse group() moet gebruiken?

Ik denk niet dat dat gaat lukken om te doen omdat ik een functie heb waar een regexplist wordt toegekend.
Zelfs als ik de hele mailto source tag in een rawstr zet vind ie em niet! :(
Wat ie dus wel zou moeten vinden want het staat gewoon hierin:
http://ezeeman.demon.nl/files/mailtest.html
Python:
1
2
3
4
5
6
def RegExps():
    rawstr = """<a href="mailto:testmail@test.nl">test account e-mail</a>"""
    regexplist = (re.compile("^.+(@)[a-zA-Z0-9]+(.)[a-zA-Z0-9]{2,4}$"), #voor normale adressen
                  re.compile("^.+\\@(\\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)(,?)(;?)$"),  #voor normale adressen
                  re.compile(r"<a.+?href=\"mailto:(.*?)\".*?>"), #ook voor mailto adressen (werkt ook niet)
                  re.compile(rawstr)) #checkt voor de test op de hele mailto tag maar werkt ook niet!


Hoe wil ik dit nou ooit nog voor elkaar krijgen :? :)
Die normale adressen werken perfect.. (adres1@domein.nl etc..)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Ehm, waarom staat die laatste regel in je code? <a href="mailto:testmail@test.nl">test account e-mail</a> is volgens mij geen regexp (strict natuurlijk wel, maar het is compleet zinloos :p). Wat doe je vervolgens met regexplist? Hij werkt namelijk ècht!

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Verwijderd schreef op woensdag 16 maart 2005 @ 18:52:
Ehm, waarom staat die laatste regel in je code? <a href="mailto:testmail@test.nl">test account e-mail</a> is volgens mij geen regexp (strict natuurlijk wel, maar het is compleet zinloos :p). Wat doe je vervolgens met regexplist? Hij werkt namelijk ècht!
Ik heb em gewoon helemaal toegevoegd.. en ook dan wil hij hem niet pakken.
Puur voor de test dus en om bijv. jou te laten zien dat het nu nog niet werkt :D

Heel simpel gezegd ben ik er nu achter wat mijn probleem is.
Mailadressen die als volgt in een source van een html page staan zijn geen probleem:

code:
1
yadayadayadayadayadayada mail@adres.nl yadayadayadayadayadayada


Staat het echter ook alleen maar zo:
code:
1
yadayadayadayadayadayada<br>mail@adres.nl<br>yadayadayadayadayad

Werkt het niet meer. :o

M.a.w. hij kan geen mailadressen filteren die aan een tekst vast zitten gekoppeld. Daarom krijgt hij ook <a href="mailto:mail@adres.nl">click4mail</a> niet te pakken.

Waarom dit is, weet ik niet en is eigenlijk de hoofdvraag van dit topic.. want zoals je kan zien op de img uit mijn startpost (deze) is mijn regexp wel goed zeg maar :)

Anders wil ik ook wel ff mijn code posten op verzoek :)

[ Voor 12% gewijzigd door DeMoN op 16-03-2005 19:45 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

DeMoN schreef op woensdag 16 maart 2005 @ 19:43:
[...]

Anders wil ik ook wel ff mijn code posten op verzoek :)
Heel graag :)

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Hou in gedachten dat dit een van mijn eerste programma's is ;)
Als je hem runned zal je er btw achter komen dat veel dingen ff niet werken als het moet. Zoals dat je een URL kan ingeven om te scannen e.d. Dat heb ik tijdelijk ff hardcoded gezet omdat dit sneller testen is :) (net zoals de maillist op je HDD opslaan e.d.)

Als je de code gaat bekijken kan je het beter ff in een goede IDE pasten want zo te zien heeft GoT nog geen syntaxhighlighting voor Python en er zit nogal wat commentaar in wat op deze manier wel irritant kan zijn ;)

edit: CODE FF WEG.. CHECK 2 POSTS HIERONDER DAAR STAAT HET DUIDELJKER ;)

al die regexps bij elkaar ziet er wel als een zooi uit maar ook wel weer tof.. :o (ze kloppen ook nog lang niet allemaal maar het gaat erom dat die mailto dingen enzo ff werken de rest kan ik zelf wel :)

[ Voor 110% gewijzigd door DeMoN op 18-03-2005 09:46 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 16:54
DeMoN schreef op maandag 14 maart 2005 @ 17:27:
[...]


Zeer goede tips :)
Ik gooi mijn programma binnenkort ff om :P
btw.. die global re (je eerste puntje) die moest ik wel gebruiken omdat hij anders heel re niet herkende terwijl hij wel in de import zit :|
Dat kwam dus doordat je ook een lokale variable had die je 're' had genoemd. Je kreeg waarschijnlijk een UnboundLocalError: local variable 're' referenced before assignment. Nu je 're' hebt hernoemd is 'global re' ook niet meer nodig.
DeMoN schreef op woensdag 16 maart 2005 @ 19:43:
[...]

M.a.w. hij kan geen mailadressen filteren die aan een tekst vast zitten gekoppeld. Daarom krijgt hij ook <a href="mailto:mail@adres.nl">click4mail</a> niet te pakken.
In de regexps die je gebruikt om dit soort adressen te matchen ('<a.+?href=\"mailto:(.*?)\".*?>' en '(?<=<a href=\"mailto:).+@[a-zA-Z0-9_-]+.[a-zA-Z]{2,4}') is er geen wildcard (.* ervoor, bijvoorbeeld) gedefinieerd voordat je bij de <a href aankomt. Deze matchen (zie ook http://docs.python.org/lib/matching-searching.html) dus sowieso niet als er überhaupt iets voor de <a href staat. Nou heb ik niet getest of ze dan wel werken, maar re.search() of re.findall() gebruiken zal je in ieder geval weer een stukje dichter bij brengen.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Johannes schreef op vrijdag 18 maart 2005 @ 00:08:
[...]

Dat kwam dus doordat je ook een lokale variable had die je 're' had genoemd. Je kreeg waarschijnlijk een UnboundLocalError: local variable 're' referenced before assignment. Nu je 're' hebt hernoemd is 'global re' ook niet meer nodig.
Jup :o Dat was idd precies wat ik toen had ;)

In de regexps die je gebruikt om dit soort adressen te matchen ('<a.+?href=\"mailto:(.*?)\".*?>' en '(?<=<a href=\"mailto:).+@[a-zA-Z0-9_-]+.[a-zA-Z]{2,4}') is er geen wildcard (.* ervoor, bijvoorbeeld) gedefinieerd voordat je bij de <a href aankomt. Deze matchen (zie ook http://docs.python.org/lib/matching-searching.html) dus sowieso niet als er überhaupt iets voor de <a href staat. Nou heb ik niet getest of ze dan wel werken, maar re.search() of re.findall() gebruiken zal je in ieder geval weer een stukje dichter bij brengen.[/quote]

Aha :)
Btw, heb hier een minicode ff snel gemaakt.. kan je goed zien wat er nu niet werkt:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import re

siteurl = "http://ezeeman.demon.nl/files/mailtest.html"
source = urllib.urlopen(siteurl).read()

regexplist = (re.compile("adres1@domein.nl"),
              re.compile(r"<a href=\"mailto:testmail@test.nl\">test account e-mail</a>"))

addresslist = []
for line in source.split():
    for regexp in regexplist:
        match = regexp.match(line)
        if match:
            addresslist.append(line)
            "\n".join(addresslist)
print addresslist


output:
code:
1
2
>>> 
['adres1@domein.nl']


Nu zie je dat 'adres1@domein.nl' gewoon op die site staat, los van andere chars en zo en die matched ook gewoon. Ik heb hier expres ff geen regexps gebruikt alleen voor het voorbeeld en om te laten zien dat hij gewoon matched.
Maar nu zie je ook dat '<a href="mailto:testmail@test.nl">test account e-mail</a>' gewoon los terug te vinden is op de site en ook die probeer ik hier te matchen dmv hem gewoon op de regexp zelf te laten zoeken.
In feite niks anders dan die adres1@domein.nl alleen werkt die mailto dan weer niet :o :?

Ik heb met .* gespeeld, maar dat wil ook niet werken.
En aangezien ik een regexplist heb zou ik niet weten hoe ik dit kan combineren met een re.findall() of een re.search() .. dat gaat afaik zoals ik lees op internet wel perfect als je hem met één regexp wil laten matchen maar ik gebruik natuurlijk een hele regexplist zoals je kan zien :)

Pff valt niet mee om uit te leggen ;)
Maar iemand nog een opzetje voor mij? Ik ben er bijna :D

[ Voor 21% gewijzigd door DeMoN op 18-03-2005 09:54 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 12-03 14:25

DeMoN

Pastafari

Topicstarter
Hooray \o/

Mensen, onwijs bedankt voor uw hulp!
Ik ben eruit. Zo moeilijk was het achteraf niet meer, ik vermeldde al dat ik er bijna was :)
Oplossing:
code:
1
2
3
4
5
6
7
8
9
10
import re

siteurl = "http://ezeeman.demon.nl/files/mailtest.html"
source = urllib.urlopen(siteurl).read()

regexplist = ('<a.+?href=\"mailto:(.*?)\".*?>', '[a-zA-Z0-9]+@[a-zA-Z0-9]+.\.[a-zA-Z]{2,4}')
                
for regexp in regexplist:
    match = re.findall(regexp, source)
    print match


output
code:
1
2
3
>>> 
['testmail@test.nl']
['testmail@test.nl', 'dubbeladres@showmeonce.com', 'dubbeladres@showmeonce.com', 'adres1@domein.nl', 'adres2@domein.nl', 'adres3@domein.nl', 'adres10@domein.nl', 'adres11@domein.nl']


Dit nu dus ff netjes in mijn hoofdprogramma inbouwen (waar o.a. een doublefilter en de hele mikmak nog over de list heen wordt gehaald ;) ) :)
Veel geleerd weer.
Zie je nog onvolkomenheden of heb je tips, mag je het posten... ik leer graag zo veel mogelijk ;)

[ Voor 24% gewijzigd door DeMoN op 18-03-2005 12:22 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein

Pagina: 1