2016-09-23 1 views
0

Надеюсь, вы все в порядке. Я новичок в Python и использую python 2.7.Python 2.7 BeautifulSoup, очистка электронной почты

Я пытаюсь извлечь только MAILTO из этого общего каталога веб-бизнеса: http://www.tecomdirectory.com/companies.php?segment=&activity=&search=category&submit=Search
на почту я ищу являются письма, упомянутые в каждом виджете из-з в полном каталоге. К сожалению, в этом каталоге нет API. Я использую BeautifulSoup, но пока не добился успеха.
здесь mycode:

import urllib 
from bs4 import BeautifulSoup 
website = raw_input("Type website here:>\n") 
html = urllib.urlopen('http://'+ website).read() 
soup = BeautifulSoup(html) 

tags = soup('a') 

for tag in tags: 
    print tag.get('href', None) 

то, что я получаю только сайт фактического сайта, как http://www.tecomdirectory.com с другим HREF, а затем MailTo или веб-сайты в виджетах. я также попытался заменить суп ('а') супом («цель»), но не повезло! Может ли кто-нибудь помочь мне, пожалуйста?

+0

Hi! Спасибо за ответ! в URL-адресе я читаю php? поэтому я предположил, что в нем может быть несколько php! Извините, если нет! Еще нова в кодировании. привет – PIMg021

+0

Привет, пожалуйста, подтвердите, что нет участия в php, так что я могу отредактировать вопрос, удалив тег php? – PIMg021

ответ

1

Вы не можете просто найти все якоря, вам нужно специально искать «электронную почту:» в HREF, вы можете использовать селектор a[href^=mailto:] CSS, который находит якоря тегов, которые имеют HREF начиная с mailto::

import requests 

soup = BeautifulSoup(requests.get("http://www.tecomdirectory.com/companies.php?segment=&activity=&search=category&submit=Search").content) 

print([a["href"] for a in soup.select("a[href^=mailto:]")]) 

Или извлечь текст:

print([a.text for a in soup.select("a[href^=mailto:]")]) 

Использование find_all("a") вам нужно будет использовать регулярное выражение для достижения То же самое:

import re 

find_all("a", href=re.compile(r"^mailto:")) 
+0

Привет, Padraic! спасибо за помощь. – PIMg021

+0

i modififed код: 'import urllib импортные запросы от bs4 import BeautifulSoup сайт =' www.tecomdirectory.com/companies.php? segment = & activity = & search = category & submit = Поиск ' html = urllib.urlopen (' http: // '+ website) .read() soup = BeautifulSoup (request.get (html) .content) tags = soup ('a') для тега в тегах: print ([a ["href"] для a в soup.select ("a [href^= mailto:]")]) 'однако я получаю сообщение об ошибке: with tracebacks с окончательным комментарием: request.execption.Invalid Schema! – PIMg021

+0

Да, потому что вы передаете HTML-запросы, передаете URL-адрес и забываете urllib или просто используете urllib и забываете запросы. –

Смежные вопросы