Не удается удалить защищенную электронную почту с веб-сайта - PullRequest
0 голосов
/ 23 мая 2019

Я хочу удалить письма с этого сайта , но они защищены. Они видны на веб-сайте, но при очистке появляется защищенное письмо, которое расшифровано.

Я попытался очистить, но получил этот результат

<a href="/cdn-cgi/l/email-protection#d5a7bba695b9a6b0b2fbb6bab8"><span class="__cf_email__" data-cfemail="c0b2aeb380acb3a5a7eea3afad">[email protected]</span></a>

Мой код:

from bs4 import BeautifulSoup as bs
import requests
import re


r = requests.get('https://www.accesswire.com/api/newsroom.ashx')
p = re.compile(r" \$\('#newslist'\)\.after\('(.*)\);")
html = p.findall(r.text)[0]
soup = bs(html, 'lxml')
headlines = [item['href'] for item in soup.select('a.headlinelink')]

for head in headlines:
        response2 = requests.get(head, headers=header)
        soup2 = bs(response2.content, 'html.parser')

        print([a for a in soup2.select("a")])

Я хочу электронные письма, которые находятся в теле например. Электронная почта: theramedhealthcorp@gmail.com это письмо с этого сайта https://www.accesswire.com/546295/Theramed-Provides-Update-on-New-Sales-Channel-for-Nevada-Facility но электронная почта защищена, как ее отсканировать в текстовой форме, как настоящий адрес электронной почты? Спасибо

1 Ответ

0 голосов
/ 23 мая 2019

Сначала я попробовал ваш код, и я тоже получил [защиту электронной почты]

Тогда я понял, что веб-сайт может загружать эти данные через 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
...