Очистка адреса электронной почты из скрипта с помощью регулярных выражений в python с помощью bs4 - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь почистить адрес электронной почты с веб-сайта, где электронная почта вложена в сценарий, а простой "find / findAll + .text" не работает.

source html:

<script>EMLink('com','aol','mikemhnam','<div class="emailgraphic"><img style="position: relative; top: 3px;" src="https://www.naylornetwork.com/EMailProtector/text-gif.aspx?sx=com&nx=mikemhnam&dx=aol&size=9&color=034af3&underline=yes" border=0></div>','pcoc.officialbuyersguide.net Inquiry','onClick=\'$.get("TrackLinkClick", { LinkType: "Email", LinkValue: "mikemhnam@aol.com", MDSID: "CPC-1210", AdListingID: "" });\'')</script> <br/>

Мой текущий подход состоял в том, чтобы попробовать выражение регулярного выражения "findAll +", например, так:

for email in soup.findAll(class_='ListingPageNameAddress NONE'):
    print(email.findAll("([\w\._]+\@([\w_]+\\.)+[a-zA-Z]+)"))

, но в jupyter это только возвращает [] :/

Есть ли проблема с выражением регулярного выражения или более простой способ попытаться найти письмо здесь?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Хотя регулярные выражения со временем могут быть более устойчивыми, по моему опыту, эти части тегов сценариев остаются довольно постоянными, поэтому рассмотрим план B использования split

html ='''

<script>EMLink('com','aol','mikemhnam','<div class="emailgraphic"><img style="position: relative; top: 3px;" src="https://www.naylornetwork.com/EMailProtector/text-gif.aspx?sx=com&nx=mikemhnam&dx=aol&size=9&color=034af3&underline=yes" border=0></div>','pcoc.officialbuyersguide.net Inquiry','onClick=\'$.get("TrackLinkClick", { LinkType: "Email", LinkValue: "mikemhnam@aol.com", MDSID: "CPC-1210", AdListingID: "" });\'')</script>
<br/>

'''

print(html.split('LinkValue: "')[1].split('"')[0])
0 голосов
/ 03 марта 2019

Похоже, вы не используете правильный findall метод.Вам нужно import re, а затем использовать метод findall(), а не метод findAll() (обратите внимание на регистр букв "A").Интерфейс функции:

re.findall(pattern, string, flags=0)

Подробнее см. этот раздел документа re о нахождении всех наречий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...