Here是包含电子邮件地址的示例网址。 这是我正在使用的代码:
from bs4 import BeautifulSoup
import requests
import re
url = 'https://viterbi.usc.edu/directory/faculty/Zadeh/Ali-Enayat'
page_response = requests.get(url, timeout=5)
soup = BeautifulSoup(page_response.content, "html.parser")
email = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", soup.text)
print(email)
我希望它返回azadeh@usc.edu
作为电子邮件地址,但它返回740-4694azadeh@usc.edu
。我在做什么错,如何解决此问题,以便电子邮件提取适用于任何网页?
答案 0 :(得分:2)
re
的全部功能可供使用时,无需使用bs4
:
from bs4 import BeautifulSoup as soup
import requests
d = soup(requests.get('https://viterbi.usc.edu/directory/faculty/Zadeh/Ali-Enayat').text, 'html.parser')
email = d.find('div', {'class':'contactInformation'}).find_all('ul')[-2].find_all('li')[-1].text
输出:
'azadeh@usc.edu'
编辑:更通用的方法是将正则表达式应用于bs4
对象的html内容:
re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", str(d))
输出:
['azadeh@usc.edu']