Сначала я попробовал ваш код, и я тоже получил [защиту электронной почты]
Тогда я понял, что веб-сайт может загружать эти данные через JavaScript.
Вы можете выполнить свою работу, используя селен или любой легкий браузер.
Я использовал библиотеку PyQt5, чтобы открыть страницу, как если бы она открывалась в браузере с поддержкой JavaScript, затем я получил исходный код и выполнил обычный код BeautifulSoup.
Команды обязательной установки (если вы являетесь пользователем Windows):
Чтобы установить PyQt5: pip install pyqt5
В дистрибутиве PyQt5 для Windows нет PyQtWebEngine, его нужно установить отдельно:
pip install PyQtWebEngine
Чтобы отобразить страницы на основе JavaScript с помощью pyqt4, я следил за видео SentDex здесь: https://www.youtube.com/watch?v=FSH77vnOGqU
Но это было для pyqt4. Чтобы перейти от pyqt4 к pyqt5, мне помог этот ответ StackOverflow:
https://stackoverflow.com/a/44432380/8810517
Мой код:
import requests
import re
from bs4 import BeautifulSoup as bs
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEnginePage
class Client(QWebEnginePage):
def __init__(self,url):
self.app = QApplication(sys.argv)
QWebEnginePage.__init__(self)
self.html=""
self.loadFinished.connect(self.on_page_load)
self.load(QUrl(url))
self.app.exec_()
def on_page_load(self):
self.html=self.toHtml(self.Callable)
print("In on_page_load \n \t HTML: ",self.html)
def Callable(self,html_str):
print("In Callable \n \t HTML_STR: ",len(html_str))
self.html=html_str
print("In Callable \n \t HTML_STR: ",len(self.html))
self.app.quit()
url="https://www.accesswire.com/546227/InterRent-Announces-Voting-Results-from-the-2019-Annual-and-Special-Meeting"
client_response= Client(url)
soup = bs(client_response.html, 'html.parser')
table = soup.find_all('table')
#print(len(table))
table = table[len(table)-1]
#print(table)
a = table.find_all('a')
#print(len(a))
for i in a:
print(i.text)
Выход:
mmcgahan@interrentreit.com
bcutsey@interrentreit.com
cmillar@interrentreit.com