Python 从 href 抓取电子邮件地址 link
Python scraping email address from href link
我想获取这些学校的所有电子邮件地址(绿色 links):
http://www.schulliste.eu/schule/
现在我有了获取所有 href link 的代码,但我如何才能点击每个 link 并从每个点击的 link 中删除电子邮件地址?
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
import requests
def getLinks(url):
html_page = urlopen(url)
soup = BeautifulSoup(html_page)
links = []
for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
links.append(link.get('href',))
return links
print(getLinks("http://www.schulliste.eu/schule/"))
您需要有另一个类似于 getLinks
的功能,例如称为 getEmail
,您将子页面的 URL 传递给它,它使用 urlopen
和 BeautifulSoup(就像您在第一个函数中所做的那样)来获取 HTML 内容并从该页面提取电子邮件地址。
然后您的主代码需要为从 getLinks
.
检索到的每个 link 调用 getEmail
您可以找到每个学校的所有链接,然后 运行 对每个学校的请求:
import requests
from bs4 import BeautifulSoup as soup
def get_emails(_links:list, _r = [0, 10]):
for i in range(*_r):
new_d = soup(requests.get(_links[i]).text, 'html.parser').find_all('a', {'class':'my_modal_open'})
if new_d:
yield new_d[-1]['title']
d = soup(requests.get('http://www.schulliste.eu/schule/').text, 'html.parser')
results = [i['href'] for i in d.find_all('a')][52:-9]
print(list(get_emails(results)))
输出:
['schuleamhasenwald-gue@freenet.de', 'kita-stmartin@htp-tel.de', 'wundertuete@stephansstift.de', 'a.haeupl@igs-baltic-schule.de', 'kindergarten@bothel.de']
我想获取这些学校的所有电子邮件地址(绿色 links): http://www.schulliste.eu/schule/
现在我有了获取所有 href link 的代码,但我如何才能点击每个 link 并从每个点击的 link 中删除电子邮件地址?
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
import requests
def getLinks(url):
html_page = urlopen(url)
soup = BeautifulSoup(html_page)
links = []
for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
links.append(link.get('href',))
return links
print(getLinks("http://www.schulliste.eu/schule/"))
您需要有另一个类似于 getLinks
的功能,例如称为 getEmail
,您将子页面的 URL 传递给它,它使用 urlopen
和 BeautifulSoup(就像您在第一个函数中所做的那样)来获取 HTML 内容并从该页面提取电子邮件地址。
然后您的主代码需要为从 getLinks
.
getEmail
您可以找到每个学校的所有链接,然后 运行 对每个学校的请求:
import requests
from bs4 import BeautifulSoup as soup
def get_emails(_links:list, _r = [0, 10]):
for i in range(*_r):
new_d = soup(requests.get(_links[i]).text, 'html.parser').find_all('a', {'class':'my_modal_open'})
if new_d:
yield new_d[-1]['title']
d = soup(requests.get('http://www.schulliste.eu/schule/').text, 'html.parser')
results = [i['href'] for i in d.find_all('a')][52:-9]
print(list(get_emails(results)))
输出:
['schuleamhasenwald-gue@freenet.de', 'kita-stmartin@htp-tel.de', 'wundertuete@stephansstift.de', 'a.haeupl@igs-baltic-schule.de', 'kindergarten@bothel.de']