#python-3.x #web-scraping
#python-3.x #очистка веб-страницы
Вопрос:
У меня есть веб-страница, с которой я хочу повторно просмотреть электронное письмо в середине:
url = 'https://www.westminster.ac.uk/about-us/our-people/directory/ramachandran-natasha-1'
Я пробовал использовать BeautifoulSoup с запросами и urllib, но ни один из них не работает, потому что электронное письмо не включено, когда я print(page_source)
.
page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
page_source = page.text
и
page = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
infile = urllib.request.urlopen(page).read()
page_source = infile.decode('ISO-8859-1')
Я пробовал с заголовками и без них. Кроме того, если я сделаю это с помощью selenium с driver.get(url)
, тогда это сработает. Но я не могу использовать selenium, потому что это слишком медленно.
Я видел несколько других подобных потоков, и они предложили решения выше, но они не работают для меня.
Есть ли быстрый способ, которым я могу получить электронное письмо на этой странице?
Комментарии:
1. Электронное письмо, которое вы хотите получить, является динамическим. Попробуйте использовать selenium.
2. Я заявляю в вопросе, что я не хочу использовать selenium. Спасибо selenium.
Ответ №1:
from bs4 import BeautifulSoup
import requests
url="https://www.westminster.ac.uk/about-us/our-people/directory/ramachandran-natasha-1"
page_data=requests.get(url)
soup=BeautifulSoup(page_data.content,"html.parser")
email_id=[]
for job_tag in soup.find_all("div",class_="masthead-profile__result-set"):
email=job_tag.find("div",class_="masthead-profile__result-value--email email")
email_id.append(email)
вы видите, что это сработало бы, но электронная почта защищена веб-сайтом, если вы просто напечатаете job_tag в приведенном выше вопросе, вы можете это ясно видеть
Комментарии:
1. Итак, есть ли другой способ получить его?
2. я не уверен… но я думаю, что нет, некоторые веб-сайты защищают некоторые данные, чтобы люди не очищали их