0
votes

Python Regex WebCrawling, obtenez des résultats doubles, besoin d'un seul

Je travaille sur un programme de base de Python WebCrawling pour accéder à un site Web et lisez les adresses électroniques et montrez qu'en sortie. Je reçois la bonne réponse, mais cela devient dupliqué. Pouvez-vous s'il vous plaît aider à le réparer?

Voici le programme: xxx


0 commentaires

3 Réponses :


0
votes

Il existe deux copies de tous les courriels dans le fichier HTML (un en texte et un autre dans HREF code> attribut). Voici un exemple de ce cas:

from re import findall
import urllib.request
from bs4 import BeautifulSoup as bs

url = "https://www.uta.edu/academics/schools-colleges/business/admissions-and-advising/cob-advising"

print("Email addresses for advisors:")

response = urllib.request.urlopen(url)

div = bs(response, 'html5lib')

pdata = findall(r"[A-Za-z0-9._%+-]+"
                     r"@[A-Za-z0-9.-]+"
                     r"\.[A-Za-z]{2,4}", div.text)

for item in pdata:
    print(item)


0 commentaires

0
votes
for item in list(dict.fromkeys(pdata)):
    print(item)
"dict.fromkeys(pdata)" import list's items to its key. (In this case value will be None) When importing, same key value will be ignored.
Finally list(dict.fromkeys(pdata)) will make duplicated items to be removed.

0 commentaires

0
votes

Vous obtenez chaque fois chaque adresse e-mail, car votre site Web contient chaque adresse e-mail deux fois. Vous pouvez convertir votre liste en un ensemble pour obtenir uniquement les éléments uniques. Vous pouvez ensuite le convertir dans une liste, si vous avez besoin des résultats dans une liste:

pdata = list(set(pdata))


0 commentaires