希望你们都很好。我是Python新手并使用python 2.7。
我试图仅从此公共网站业务目录中提取mailto:http://www.tecomdirectory.com/companies.php?segment=&activity=&search=category&submit=Search
我正在寻找的邮件是完整目录中a-z中每个小部件中提到的电子邮件。遗憾的是,该目录没有API。
我使用的是BeautifulSoup,但到目前为止还没有成功
这是我的代码:
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或网站。我也尝试用汤('目标')代替汤(' a'),但没有运气!请有人帮帮我吗?
答案 0 :(得分:1)
你不能只找到每个锚,你需要在href中专门寻找“mailto:”,你可以使用一个css选择器a[href^=mailto:]
找到 anchor 标签,它们有一个< em> 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:"))