Я работаю над сценарием, который будет извлекать электронные письма с данного сайта. Одна сложность, с которой я сталкиваюсь, заключается в том, что часто электронные письма, которые я ищу, будут на страницах «Контакты» или «Наши люди». Пока что то, что я написал, будет искать электронное письмо на главной веб-странице, т.е. www.examplecompany.com, и если оно ничего не найдет, оно будет искать электронные письма на страницах, ссылки на которые находятся на этой странице. См. Ниже:
import requests, bs4, re, sys, logging
logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s - %(message)s')
print('Fetching Website...')
target_URL = 'www.exampleURL.com' #URL goes here
res = requests.get(target_URL)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
type(soup)
my_list = []
for link in soup.find_all('a'):
my_list.append(link.get('href'))
emailregex = re.compile(r'''(
[a-zA-Z0-9._%+-:]+
@
[a-zA-Z0-9.-]+
\.[a-zA-Z]{2,4}
)''', re.VERBOSE)
# Converts each item in list to string
myemail_list = list(map(str, my_list))
# Filters out items in list that to not fit regex criteria
newlist = list(filter(emailregex.search, myemail_list))
if len(newlist) < 1:
new_site = []
for i in range(len(my_list)):
new_site.append(f'{target_URL}{(my_list[i])}')
try:
for site in range(len(new_site)):
newthing = requests.get(new_site[site])
newthing.raise_for_status()
freshsoup = bs4.BeautifulSoup(newthing.text, 'lxml')
type(freshsoup)
except requests.exceptions.HTTPError as e:
pass
final_list = []
for link in freshsoup.find_all('a'):
final_list.append(link.get('href'))
print(final_list)
else:
print(newlist)
Я думаю, что самая большая проблема, с которой я сталкиваюсь, заключается в том, что мой метод составления и поиска связанных URL-адресов просто неправильный. Это будет работать на некоторых сайтах, но не на других, и это подвержено ошибкам. Кто-нибудь может дать мне лучшее представление о том, как это сделать?
Кстати, если мне кажется, что я понятия не имею, что я делаю, вы правы. Я только начал изучать python, и это личный проект, помогающий мне лучше овладеть основами, поэтому любая помощь приветствуется.
Спасибо за вашу помощь.